Ich erstelle eine REST-API, die Einfügungen (POST, nicht idempotent) und Aktualisierungen (PUT, idempotent) zum Hinzufügen / Aktualisieren der Datenbank zu unserer Anwendung zulässt.
Ich frage mich, ob es Standards oder Best Practices dafür gibt, welche Daten wir in der Antwort auf eine POST-Operation (Einfügen) an den Client zurücksenden. Wir müssen mindestens einen Datensatz-ID-Wert zurücksenden (z. B. Ihr neuer Datensatz ist Datensatz Nr. 1234).
Sollen wir mit dem vollständigen Objekt antworten? (zB im Wesentlichen dieselbe Antwort, die sie von einer "GET / object_type / 1234" -Anforderung erhalten würden)
Sollen wir nur mit dem neuen ID-Wert antworten? (z. B. "{id: 1234}", dh, wenn der gesamte Datensatz abgerufen werden soll, muss eine zusätzliche HTTP-GET-Anforderung ausgeführt werden, um den vollständigen Datensatz abzurufen.)
Ein Redirect-Header, der auf die URL für das gesamte Objekt verweist?
Etwas ganz anderes?
Antworten:
Nun, in einer REST-Schnittstelle, die, wo immer möglich, HTTP folgt, würde ich eine 201 und eine URI im Location-Header-Feld an die neu erstellte Ressource zurückgeben. Hier ist, was Statuscode-Definitionen sagen:
Wenn etwas schief gelaufen ist, sollten Sie nicht zurückkehren,
-1
wie andere gesagt haben, sondern einfach einen Client- oder Server-Fehlercode (4xx oder 5xx). Wenn ein Benutzer beispielsweise keine neue Ressource erstellen darf, geben Sie einfach "401 Unauthorized" zurück, nicht mehr und nicht weniger.quelle