Buduję interfejs API REST, który umożliwia wstawianie (POST, nie idempotent) i aktualizację (PUT, idempotent) żądań dodania / aktualizacji bazy danych do naszej aplikacji.
Zastanawiam się, czy istnieją jakieś standardy lub najlepsze praktyki dotyczące tego, jakie dane wysyłamy z powrotem do klienta w odpowiedzi na operację POST (wstawianie). Musimy odesłać przynajmniej wartość identyfikatora rekordu (np. Nowy rekord to rekord nr 1234).
Czy powinniśmy odpowiedzieć pełnym przedmiotem? (np. zasadniczo taka sama odpowiedź, jaką otrzymaliby z żądania „GET / typ_obiektu / 1234”)
Czy powinniśmy odpowiadać tylko nową wartością identyfikatora? (np. „{id: 1234}”, co oznacza, że jeśli chcą pobrać cały rekord, muszą wykonać dodatkowe żądanie HTTP GET, aby pobrać pełny rekord)
Nagłówek przekierowania wskazujący adres URL pełnego obiektu?
Coś zupełnie innego?
Odpowiedzi:
Cóż, w interfejsie REST, po HTTP, o ile to możliwe, zwrócę 201 i identyfikator URI w polu nagłówka Lokalizacja do nowo utworzonego zasobu. Oto, co mówi Definicja kodu statusu :
Jeśli coś poszło nie tak, twierdzę, że nie powinieneś wracać,
-1
jak powiedzieli inni, ale po prostu kod błędu klienta lub serwera (4xx lub 5xx). Na przykład, jeśli użytkownik nie może utworzyć nowego zasobu, po prostu zwróci „401 Nieautoryzowany”, nic więcej i nic innego.źródło