2012-09-29 11 views
10

Wykonuję połączenie AJAX, aby ustawić nazwę użytkownika. Jeśli nazwa użytkownika jest już zajęta, jaki kod HTTP powinienem zwrócić?Jaki kod błędu HTTP zwraca za nazwę już zajętą?

+0

Możliwy duplikat [Który kod odpowiedzi HTTP dla "Ten adres e-mail jest już zarejestrowany"? (Http://stackoverflow.com/questions/9269040/which-http-response-code-for-this-email-is- już zarejestrowany) –

Odpowiedz

-2

Nie ma kodu HTTP dla nazwy już pobranej. Zobacz List of HTTP Status Codes.

Jeśli używasz wywołań AJAX do ustawienia nazwy użytkownika, dlaczego nie chcesz wyświetlać błędu w kodzie HTML? Jest to bardziej przyjazne dla użytkownika, ponieważ użytkownicy zobaczą, co oznacza rzeczywisty błąd, zamiast zobaczyć kod 4XX.

+1

chciałem złapać kod 4xx z jquery i wyświetlić przyjazny dla użytkownika komunikat o błędzie. – Ryan

+0

Nie jesteś ograniczony do łapania rzeczy z kodami stanu http. zamiast tego możesz złapać komunikaty o błędach. Sprawdź [jQuery API na $ .ajax] (http://api.jquery.com/jQuery.ajax/). Poradnik 'success' powinien ci pomóc, po prostu sprawdź przykłady w API. – rationalboss

+0

Jak skomentowałem poniżej, 200 oznacza sukces. Błędy kończące żądania gwarantują kod statusu błędu. Mam nadzieję, że Ryan nie wyszedł z drogi, by powrócić na dwadzieścia dwa lata, kiedy prośba się nie powiodła - to zły pomysł dookoła. –

7

Wybrałbym 422 Niepokonany podmiot. Wielu deweloperów rails używa tego do wszystkich błędów sprawdzania poprawności.

I tak, jest całkowicie właściwe, aby ocenić stan błędu i wyświetlić komunikat o błędzie za pomocą javascript. Jest to szczególnie przydatne, jeśli używasz tych samych działań dla interfejsu API. Następnie twoje żądania ajaxowe mają dostęp do tego samego interfejsu API, który można eksponować innym programistom.

16

Możesz użyć 409 Conflict.otherwise 200 z komunikatem o błędzie.

1

Nie ma tu żadnej zasady, to zależy od Ciebie. Jednak, jak powiedział @rationalboss, ma sens powrót 200 z komunikatem, ponieważ żądanie HTTP się powiodło, błąd nie jest związany z żądaniem.

400 błędów oznacza, że ​​samo zapytanie nie było poprawne, np. Błędny czasownik lub brakujące parametry.

Pytanie dotyczy interpretacji, zarówno ze strony klientów oprogramowania, jak i ludzi, dlatego lepiej jest trzymać się z dala od kodów błędów, gdy nie ma błędu HTTP.

+1

Nie zgadzam się, ale jak powiedziałeś, jest to kwestia opinii. Dla mnie błąd kończący prośbę gwarantuje kod błędu. Nie chcę, aby klient sprawdzał szczegóły w odpowiedzi, aby wiedzieć, że coś jest nie tak. Jeśli zwrócę OK, oznacza to, że udało się. Wszelkie błędy kończące żądanie powinny należeć do kategorii 400, chyba że jest to faktyczny wyjątek serwera, przypadek, w którym przechodzi do 500, ale nigdy 200. –

Powiązane problemy