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/projectsPOST /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/1PUT /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/1Antwortet 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-Aufruf | Operation |
|---|---|
| GET /projects | Sammlung abrufen (GetCollection) |
| POST /projects | Neu 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.