Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

REST-API Definition #306

Open
SemikolonDEV opened this issue Jun 16, 2024 · 4 comments
Open

REST-API Definition #306

SemikolonDEV opened this issue Jun 16, 2024 · 4 comments
Labels
Type: Enhancement New feature or request

Comments

@SemikolonDEV
Copy link

Für die einfache Generierung eines REST-API Clients in jeglicher Programmiersprache wäre es sinnvoll die Schnittstellendefinition in als OpenAPI in der YAML- oder JSON- Syntax bereitzustellen.

@marvger
Copy link

marvger commented Aug 16, 2024

Das wäre wirklich praktisch - ist das in (naher) Zukunft geplant?

@abrain
Copy link
Owner

abrain commented Aug 17, 2024

Die API unter /wp-json/ dokumentiert sich eigentlich bereits selbst, und das dynamisch zur Laufzeit, je nach installierten Plugins und Settings. Allerdings nicht im OpenAPI-Format, es scheint aber Konverter dafür zu geben (z.B. https://wordpress.org/plugins/wp-openapi/). Sieht das brauchbar aus?

@abrain abrain added the Type: Enhancement New feature or request label Aug 17, 2024
@marvger
Copy link

marvger commented Aug 20, 2024

Stimmt.. gar nicht dran gedacht.. :) Danke dir!
Allerdings gibt es nur eine POST-Route und keine zum Updaten, Holen (einzeln und alle) und Löschen.

Vorschlag fürs nächste Update: CRUD-Routen?

@abrain
Copy link
Owner

abrain commented Aug 24, 2024

Im Namespace einsatzverwaltung gibt es nur diese eine Route, ja. Das ist auch bisher die einzige selbst definierte.

WordPress generiert für alle Inhaltstypen und Taxonomien automatisch CRUD-Routen unter /wp-json/wp/v2/, sofern man das nicht unterbindet. Für die Einsatzberichte also beispielsweise /wp-json/wp/v2/einsatz. Entsprechend schien es mir nicht sinnvoll, eine eigene Reihe von API-Endpunkten parallel zu pflegen.

Das Problem mit den automatisch generierten Routen ist allerdings, dass sie direkt das interne Datenmodell widerspiegeln. Und sobald sich daran etwas ändert, genau genommen auch die API-Kompatibilität bricht. Aus diesem Grund entstand der POST-Endpunkt, um eine stabile Schnittstelle zu haben, die auch über interne Veränderungen hinaus funktioniert. Außerdem wäre das Anlegen eines Berichts mit nur einem einzigen Aufruf über die anderen Endpunkte IIRC so gar nicht möglich, da erst IDs von Taxonomien abgefragt werden müssten.

Bei den automatisch generierten Routen ist es aktuell aber tatsächlich noch so, dass einige Metadaten wie z.B. der Einsatzort fehlen. Das war eine Vorsichtsmaßnahme, da die REST-API von WordPress erst einmal öffentlich lesbar ist. Also wenn der Ort eingetragen ist, aber über das Template nicht ausgegeben wird, hätte man ihn dort trotzdem nachlesen können. Das lässt sich aber soweit ich mich erinnere recht feingranular definieren, dass einzelne Eigenschaften nur mit Authentifizierung lesbar sind (schreibbar sowieso). Muss ich mir nochmal ansehen.

Die automatisch generierten Routen folgen aber einem Standardschema, und da gibt es schon Client-Libraries dazu (die ich aber auch noch nicht verwendet habe): https://developer.wordpress.org/rest-api/

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Type: Enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants