Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Automatisches CRUD im Detail

Automatisches CRUD im Detail

~16 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026

Kapitel 9 zeigte, DASS #[ApiResource] CRUD-Endpunkte erzeugt – jetzt gehen wir JEDEN einzelnen davon systematisch durch, mit ECHTEN curl-Aufrufen gegen unsere Project-Resource.

GET /api/projects: alle Projekte auflisten

curl -k -H 'Accept: application/json' https://localhost/api/projects

POST /api/projects: ein neues Projekt erstellen

curl -k -X POST https://localhost/api/projects \
  -H 'Content-Type: application/json' \
  -d '{"name": "Website-Relaunch", "description": "Kompletter Redesign"}'
{
  "@context": "/api/contexts/Project",
  "@id": "/api/projects/1",
  "@type": "Project",
  "id": 1,
  "name": "Website-Relaunch",
  "description": "Kompletter Redesign",
  "createdAt": "2026-08-06T12:00:00+00:00"
}

Antwortet mit Status 201 Created UND dem VOLLSTÄNDIGEN, nun mit generierter id und createdAt befüllten Objekt – OHNE dass wir EINE Zeile Controller-Code geschrieben haben. Content-Type: application/json im Request-Header ist WICHTIG: API Platform erwartet standardmäßig application/ld+json für Schreibvorgänge, akzeptiert aber auch reines JSON.

GET /api/projects/{id}: ein einzelnes Projekt abrufen

curl -k -H 'Accept: application/json' https://localhost/api/projects/1

PUT /api/projects/{id}: vollständig aktualisieren

curl -k -X PUT https://localhost/api/projects/1 \
  -H 'Content-Type: application/json' \
  -d '{"name": "Website-Relaunch v2", "description": "Aktualisierte Beschreibung"}'

Achtung: PUT erwartet das GESAMTE Objekt – Felder, die im Request-Body FEHLEN, werden (je nach Konfiguration) auf ihren Standardwert zurückgesetzt. Für PARTIELLE Updates ist PATCH das richtige Werkzeug.

PATCH /api/projects/{id}: teilweise aktualisieren

curl -k -X PATCH https://localhost/api/projects/1 \
  -H 'Content-Type: application/merge-patch+json' \
  -d '{"description": "Nur die Beschreibung ändert sich"}'

Content-Type: application/merge-patch+json (RFC 7396) signalisiert: NUR die angegebenen Felder ändern, ALLE anderen UNVERÄNDERT lassen – der ENTSCHEIDENDE Unterschied zu PUT.

DELETE /api/projects/{id}: löschen

curl -k -X DELETE https://localhost/api/projects/1

Antwortet mit 204 No Content – ERFOLGREICH, aber OHNE Antwort-Body, da es nach einer Löschung logisch NICHTS mehr zurückzugeben gibt.

Übersicht: alle sechs Standard-Operationen

HTTP-AufrufOperation
GET /projectsSammlung abrufen (GetCollection)
POST /projectsNeu erstellen (Post)
GET /projects/{id}Einzelnes Element abrufen (Get)
PUT /projects/{id}Vollständig ersetzen (Put)
PATCH /projects/{id}Teilweise aktualisieren (Patch)
DELETE /projects/{id}Löschen (Delete)

Tipp: Diese SECHS Operationen sind der API-Platform-STANDARD – Kapitel 12 zeigt, wie sich NUR EINZELNE davon aktivieren lassen (z. B. eine schreibgeschützte Resource ohne POST/PUT/DELETE), und Kapitel 61 ergänzt EIGENE, zusätzliche Operationen jenseits dieser sechs.