Kod statusu HTTP do aktualizacji i usunięcia?

Jaki kod stanu mam ustawić dla UPDATE (PUT) i DELETE (np. produkt pomyślnie zaktualizowany)?

Author: Bill the Lizard, 2010-02-26

8 answers

Dla PUT request: HTTP 200 lub HTTP 204 powinno oznaczać "resource updated successfully".

Dla DELETE request: HTTP 200 lub HTTP 204 powinno oznaczać "zasób usunięty pomyślnie". http 202 może być również zwrócony, co oznaczałoby, że instrukcja została zaakceptowana przez serwer i "zasób został oznaczony do usunięcia".

9.6 PUT

Jeśli istniejący zasób zostanie zmodyfikowany, należy wysłać kod odpowiedzi 200 (OK) lub 204 (Brak treści)>, aby wskazać pomyślne zakończenie żądania.

9.7 DELETE

Skuteczna odpowiedź powinna wynosić 200 (OK), jeśli odpowiedź zawiera podmiot opisujący status, 202 (zaakceptowana), jeśli działanie nie zostało jeszcze wdrożone, lub 204 (Brak treści), jeśli działanie zostało wdrożone, ale odpowiedź nie obejmuje podmiotu.

Źródło: w3.org: metoda HTTP/1.1 Definicje

HTTP 200 OK: standardowa odpowiedź dla udanego HTTP prośby. Rzeczywista odpowiedź będzie zależy od zastosowanej metody żądania.

HTTP 204 No Content: Serwer pomyślnie przetworzył żądanie, ale nie zwraca żadnej treści

Źródło: Lista kodów statusu HTTP: 2xx Success

 1592
Author: Daniel Vassallo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-20 12:15:03

Krótka odpowiedź: dla obu PUT I DELETE, należy wysłać albo 200 (OK) lub 204 (Brak treści).

Długa odpowiedź: Oto kompletny diagram decyzji(Kliknij, aby powiększyć).

HTTP 1.1 diagram decyzji

Źródło: https://github.com/for-GET/http-decision-diagram

 731
Author: ЯegDwight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-16 08:38:38

Oto kilka wskazówek:

DELETE

  • 200 (Jeśli chcesz wysłać jakieś dodatkowe dane w odpowiedzi) lub 204 (zalecane).

  • 202 operacja usunięta nie została jeszcze zatwierdzona.

  • Jeśli nie ma nic do usunięcia, użyj 204 lub 404 (operacja DELETE jest idempotentna, Usuń już usunięty element to operacja pomyślna , więc możesz zwrócić 204, ale to prawda, że idempotent nie musi oznaczać tej samej odpowiedzi)

Inne błędy:

  • 400 złe żądanie (Nieprawidłowa składnia lub złe zapytanie jest dziwne , ale możliwe).
  • 401 Nieautoryzowano authorization failed
  • 403 Forbidden : błąd autoryzacji lub nieprawidłowy identyfikator aplikacji.
  • 405 Nie Wolno . Jasne.
  • 409 konflikt zasobów Może być możliwy w złożonych systemach.
  • i 501, 502 w przypadku błędów.

PUT

Jeśli aktualizujesz element zbioru

  • 200/204 z tych samych powodów co powyżej.
  • 202 Jeśli operacja nie została jeszcze zrealizowana.

Element nie istnieje:

  • PUT może być 201 (jeśli stworzyłeś element, ponieważ takie jest twoje zachowanie)
  • 404 Jeśli nie chcesz tworzyć elementów poprzez PUT.

  • 400 Bad Request (błędna składnia lub złe zapytanie częściej niż w przypadku DELETE).

  • 401 Nieautoryzowano
  • 403 Forbidden : błąd uwierzytelnienia lub nieprawidłowy identyfikator aplikacji.
  • 405 Niedozwolone . Jasne.
  • 409 konflikt zasobów Może być możliwy w złożonych systemach, jak w DELETE.
  • 422 Unprocessable entity pomaga odróżnić "złe żądanie" (np. źle ukształtowane XML/JSON) od nieprawidłowych wartości pól
  • i 501, 502 w przypadku błędów.
 109
Author: Alfonso Tienda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-11 10:15:50

RFC 2616 opisuje Jakie kody statusu użyć .

I nie, to Nie zawsze 200.

 13
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-26 15:20:54

Oprócz 200 i 204, 205 (Resetuj Zawartość) może być poprawną odpowiedzią.

Serwer spełnił żądanie i agent użytkownika powinien zresetować widok dokumentu, który spowodował wysłanie żądania ... [np.] wyczyszczenie formularza, w którym dane wejściowe są podane.

 7
Author: pje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-22 23:08:01

Ponieważ pytanie zagłębia się w if DELETE "should" return 200 vs 204 warto wziąć pod uwagę, że niektórzy zalecają zwrócenie podmiotu z linkami, więc preferencja jest dla 200.

" zamiast zwracać 204 (bez zawartości), API powinno być pomocne i zaproponuj miejsce. W tym przykładzie myślę, że jeden oczywisty link do provide is to " "somewhere.com/container/' (minus 'resource') " - kontener, z którego na klient właśnie usunął zasób. Być może klient chce Usuń więcej zasobów, więc byłby to pomocny link."

Http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

Jeśli klient napotka odpowiedź 204, może się poddać, przejść do punktu wejścia API lub wrócić do poprzedniego zasobu odwiedzane. Żadna z opcji nie jest szczególnie dobra.

Osobiście nie powiedziałbym, że 204 się myli (ani czy autor; mówi "irytujące"), ponieważ dobre buforowanie po stronie klienta ma wiele zalet. Najlepiej być konsekwentnym.

 6
Author: KCD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-19 17:05:28

W czerwcu 2014 RFC7231 przestarzały RFC2616. Jeśli wykonujesz REST przez HTTP to RFC7231 opisuje dokładnie, jakiego zachowania oczekuje się od GET, PUT, POST i DELETE

 2
Author: Ivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 15:52:27

Gdy zasób jest modyfikowany, kod odpowiedzi powinien być 200 ("OK") . Jeśli stan zasobu zmienia się w sposób, który zmienia URI do zasobu (na przykład zmienia nazwę konta użytkownika), kod odpowiedzi to 301 ("przeniesiony na stałe"), a nagłówek lokalizacji powinien zawierać nowy URI.

Gdy obiekt jest usuwany, kod odpowiedzi powinien wynosić 200 ("OK").

Kliknij poniższy link, aby uzyskać więcej informacji -- kod stanu spoczynku

 -1
Author: Ashutosh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-26 07:51:24