Ich entwerfe einen RESTful-Webdienst mit WebApi und frage mich, welche HTTP-Antworten und -Antwortkörper beim Aktualisieren / Erstellen von Objekten zurückgegeben werden sollen.
Zum Beispiel kann ich die POST-Methode verwenden, um JSON an den Webdienst zu senden und dann ein Objekt zu erstellen. Ist es empfehlenswert, den HTTP-Status auf "Erstellt" (201) oder "OK" (200) zu setzen und einfach eine Nachricht wie "Neuer Mitarbeiter hinzugefügt" oder das ursprünglich gesendete Objekt zurückzugeben?
Gleiches gilt für die PUT-Methode. Welcher HTTP-Status ist am besten zu verwenden und muss ich das erstellte Objekt oder nur eine Nachricht zurückgeben? Berücksichtigt man die Tatsache, dass der Benutzer weiß, welches Objekt er ohnehin erstellen / aktualisieren möchte.
Irgendwelche Gedanken?
Beispiel:
Neuen Mitarbeiter hinzufügen:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Bestehenden Mitarbeiter aktualisieren:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Antworten:
Antwort mit Objekt erstellt / aktualisiert
HTTP/1.1 201 Created
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Antwort mit nur einer Nachricht:
HTTP/1.1 200 OK
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Message": "Employee updated"
}
Antwort nur mit Statuscode:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
Variante für SQL. Es ist äußerst praktisch, zumal es die Übermittlung neuer Daten und die Anforderung der aktualisierten Atomic-Version aufrechterhält.