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

Operations als PHP-Klassen verstehen

Operations als PHP-Klassen verstehen

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

Die SECHS Endpunkte aus Kapitel 10 entstehen nicht durch Magie, sondern durch SECHS konkrete PHP-Klassen aus dem Namespace ApiPlatform\Metadata#[ApiResource] OHNE Angaben aktiviert sie einfach ALLE mit ihren STANDARD-Einstellungen.

Die Operations explizit auflisten

api/src/Entity/Project.php
#[ApiResource(
    operations: [
        new GetCollection(),
        new Get(),
        new Post(),
        new Put(),
        new Patch(),
        new Delete(),
    ]
)]
#[ORM\Entity(repositoryClass: ProjectRepository::class)]
class Project
{
    // ... unverändert
}

GENAU dasselbe Verhalten wie das leere #[ApiResource] aus Kapitel 9 – aber jetzt SICHTBAR und damit AN JEDER EINZELNEN Operation individuell anpassbar. Die Klassen kommen aus ApiPlatform\Metadata und MÜSSEN importiert werden.

Item-Operationen vs. Collection-Operationen

API Platform unterscheidet ZWEI Operations-Familien, erkennbar am Klassennamen:

Operation-TypVerhalten
GetCollectionWirkt auf die SAMMLUNG – Pfad OHNE {id}, z. B. GET /api/projects
Get, Put, Patch, DeleteWirken auf EIN einzelnes Element – Pfad MIT {id}, z. B. GET /api/projects/1
PostSONDERFALL: erstellt ein NEUES Element, aber der Pfad hat KEIN {id} (das entsteht ERST durch die Operation)

Operationen einzeln konfigurieren

Der ECHTE Nutzen der expliziten Liste: JEDE Operation akzeptiert EIGENE Parameter – zum Beispiel eine eigene Beschreibung für die Swagger-UI, die NUR bei dieser einen Operation erscheint.

api/src/Entity/Project.php
#[ApiResource(
    operations: [
        new GetCollection(),
        new Get(),
        new Post(
            description: 'Legt ein neues Projekt an. Der Name muss eindeutig sein.'
        ),
        new Put(),
        new Patch(),
        new Delete(),
    ]
)]

Diese description erscheint DIREKT in der Swagger UI aus Kapitel 6, NUR bei der POST-Operation – GET /api/projects zeigt sie NICHT an, da sie an eine ANDERE Operation gebunden ist.

Tipp: Diese Klassen-Liste ist der SCHLÜSSEL zu allem Weiteren in diesem Block: Kapitel 12 ENTFERNT einzelne Klassen aus der Liste (schreibgeschützte Resources), Kapitel 13 ergänzt uriTemplate pro Klasse, und Kapitel 61 fügt SPÄTER GANZ NEUE, selbst geschriebene Operation-Klassen hinzu.