2017-08-22 4 views
2

Ich versuche, eine API mit dem Symfony-Bundle API-Platform zu erstellen.Benutzerdefinierte Symfony Action mit API Platform Bundle

API Ressource bieten automatische CRUD Aktion mit den HTTP-Verben POST, GET, PUT, DELETE.

Was ich will, ist ein Endpunkt hinzufügen, um eine benutzerdefinierte POST-Aktion mit einer benutzerdefinierten Nutzlast/Körper, unabhängig von einer Ressource.

Wo ich blockiere, ist es, diesen Endpunkt der automatischen API-Plattform-Dokumentation hinzuzufügen.

Bei der Suche nach dieser Art von Problem auf GitHub, ich fand, dass die API-Plattform v2 in der Lage sein sollte, es zu tun.

Siehe Issue #385 : Custom action + ApiDoc

Es sieht aus wie einige Leute den Weg zu verwenden NelmioApiDoc @ApiDoc Anmerkung finden.

Siehe Issue #17 : Documentation for custom operation

Antwort

2

Mit der @ApiDoc Annotation ein no go ist, Unterstützung für NelmioApiDoc wird in API-Plattform 3 zugunsten der builtin Swagger/Hydra-Unterstützung entfernt werden.

Wenn Sie eine custom API Platform action verwenden, sollte die Aktion automatisch in Swagger und Hydra Dokumentation dokumentiert werden.

Wie auch immer, Sie können die Swagger (und Hydra) -Dokumente anpassen, um benutzerdefinierte Endpunkte oder etwas anderes hinzuzufügen: https://github.com/api-platform/docs/blob/master/core/swagger.md#override-swagger-documentation (diese Dokumentation wird bald auf der Website verfügbar sein).

+0

Benutzerdefinierte Aktion, wie in https://api-platform.com/docs/core/operations beschrieben, erlaubt keine benutzerdefinierten Körper/Nutzlast. Die Aktion erhält immer noch den Parameter '$ data', der eine Entität/Ressource ist, die für POST- oder PUT-Methoden erstellt oder aktualisiert wurde. Danke für den Swagger Link, ich werde das so schnell wie möglich sehen. –

+0

Overriding Swagger erlaubt nur das manuelle Hinzufügen jedes benutzerdefinierten Parameters für jede benutzerdefinierte Aktion. Es bietet keine automatische Dokumentation für Parameter oder Rückgabetyp, wie Nelmio tat. Ich weiß nicht, ob es ein Ziel für die API-Plattform ist. Aber während die API-Plattform fortschreitet und von Symfony Flex mit 'composer req api 'als die beste API-Lösung vorgestellt wird, fällt es mir schwer, einfache benutzerdefinierte Aktionen zu verwalten. –

+1

Die Verwendung der v3 (derzeit in Beta) von NelmioApiDoc sieht wie eine gute Lösung für den Moment aus: https://github.com/nelmio/NelmioApiDocBundle/tree/v3.0.0-BETA4 Es ist sauber und erlaubt, die API-Plattform-Dokumente zu behalten für eine integrierte Benutzeroberfläche und alle NelmioApiDoc-Funktionen für benutzerdefinierte Aktionen verwenden. –

Verwandte Themen