2012-07-04 16 views
6

Jakie są odpowiednie kody odpowiedzi i komunikaty dla:kody odpowiedzi HTTP odróżnić niewłaściwych parametrów i wartości upadających

  1. pola złożone w niewłaściwy sposób (parametry URL vs ciała) lub brakujące pola
  2. pola uzyskiwanie nieprawidłowych wartości (string zamiast liczb, datownik w przyszłości)
  3. niektóre postacie jak ?, / przerwa rzeczy w adresie URL Parametry
  4. aktualnych awarii: nieprawidłowy poświadczeń, powtarzając już wykonaną akcję

Obecnie używamy 400 dla wszystkich.

Odpowiedz

6

Przypadki 1, 2 i 3 w swoim pytaniu są błędy zasadniczo składniowe we wniosku

=>400 Bad Request

(RFC 2616 mówi: Żądanie nie mogło być zrozumiane przez serwer . powodu składni zniekształconego)

odniesieniu do obudowy 4:

a. Nieprawidłowe poświadczenia

=>401.

b. Powtarzania już wykonanej akcję przy

=>403.

(RFC mówi: Serwer rozumieć żądanie, ale odmawia go wypełnić Autoryzacja nie pomoże i żądanie nie powinno być powtarzane..)

Ale wtedy 409 Konflikt i 410 Przeminęło sens, gdy próbuje modyfikować rzeczy nieprawidłowo (put) lub dostępu do zasobów już usunięte, odpowiednio. Jest to RFC 2616 Section 10.

3

Przeczytaj specyfikację HTTP dla każdego kodu odpowiedzi, aby uzyskać informacje o tym, co zwrócić w treści odpowiedzi. 4xx, na przykład, mówi "Z wyjątkiem sytuacji, gdy odpowiada na żądanie HEAD, serwer POWINIEN zawierać reprezentację zawierającą wyjaśnienie sytuacji błędu i to, czy jest to tymczasowy czy stały warunek."

Najważniejszą kwestią, o której należy pamiętać, jest to, że kody odpowiedzi HTTP mają być jednolite, a zatem mają dużo więcej wspólnego z promowaniem interoperacyjności niż dostarczaniem szczegółowych potrzeb poszczególnych aplikacji. Użyj treści odpowiedzi, a nie kodu, aby uwzględnić szczegółowe szczegóły w formacie oczekiwanym od klientów.

1 pola złożone w niewłaściwy sposób (parametry URL vs ciała) lub brakujących pól

Return "404 Not Found". Parametry zapytania są częścią identyfikatora URI i służą do identyfikacji zasobu./foo/bar?a=1&b=2 identyfikuje inny zasób niż foo/bar. Jeśli zasób nie istnieje, zwróć 404. Nie ma znaczenia, że ​​ta sama logika w twoim kodzie jest używana do obsługi dowolnych parametrów dla tej samej ścieżki: te szczegóły są celowo ukryte za jednolitym interfejsem. Aby uzyskać więcej informacji, patrz the URI spec.

2 pola uzyskiwanie nieprawidłowych wartości (string zamiast liczb, datownika w przyszłości)

400 jest najlepiej tutaj, chyba że zasób jest w stanie w sposób sprzeczny z wnioskiem, że użytkownik może zasadnie w stanie rozwiązać (a następnie ponownie zgłosić żądanie), w którym to przypadku zwrot 409.

3 niektóre znaki, takie jak?,/przerwa rzeczy w adresie URL Parametry

Jeśli takie złamanie jest spowodowane niepoprawnym działaniem serwera z zastrzeżonymi znakami w komponencie zapytania, zwróć 500. Jeśli klient przesłał zniekształcony identyfikator URI żądania, zwróć 400. Jeśli identyfikator URI wskazuje zasób, którego twój serwer nie obsługuje, zwróć 404.

4 Aktualnie awarie: nieprawidłowy poświadczeń powtarzania już wykonanej akcję przy

nieprawidłowe poświadczenia powinno skutkować „401.”. Powtórzenie czynności, która została już wykonana, powinno skutkować 200 OK (lub przekierowaniem itp.), Jeśli metoda żądania to idempotent (GET, HEAD, PUT, DELETE). W przypadku testu POST powtórzenie działania zależy całkowicie od charakteru działania i praktycznie każdy kod statusu może zostać zwrócony. 400/409 jest powszechne, ale wiele takich zasobów po prostu wykonuje akcję ponownie, co jest często pożądane.

+0

+1. 404 dla dziwnych adresów URL brzmi sensownie. – ArjunShankar

Powiązane problemy