Projektuję usługę sieci Web RESTful przy użyciu WebApi i zastanawiałem się, jakie odpowiedzi HTTP i treści odpowiedzi zostaną zwrócone podczas aktualizacji / tworzenia obiektów.
Na przykład mogę użyć metody POST, aby wysłać JSON do usługi sieci Web, a następnie utworzyć obiekt. Czy najlepiej jest ustawić status HTTP na utworzony (201) lub ok (200) i po prostu zwrócić komunikat, taki jak „Dodano nowego pracownika”, czy zwrócić obiekt, który został pierwotnie wysłany?
To samo dotyczy metody PUT. Którego stanu HTTP najlepiej użyć i czy muszę zwrócić utworzony obiekt, czy tylko wiadomość? Biorąc pod uwagę fakt, że użytkownik i tak wie, jaki obiekt próbuje utworzyć / zaktualizować.
jakieś pomysły?
Przykład:
Dodaj nowego pracownika:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Zaktualizuj istniejącego pracownika:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Odpowiedzi:
Odpowiedź z obiektem utworzonym / zaktualizowanym
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"
}
}
Odpowiedź z samą wiadomością:
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"
}
Odpowiedź za pomocą samego kodu statusu:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
wariantu Postgresql dla SQL. Jest to bardzo przydatne, zwłaszcza, że utrzymuje przesyłanie nowych danych i żądanie zaktualizowanej wersji atomowej.