Jakie rodzaje kodów odpowiedzi Http powinien zwracać Ajax dla błędnej walidacji formularzy?

2018-11-21 17:05
0

Załóżmy, że mamy formularz.
Chcemy dokonać jego walidacji.
Wysyłamy zapytanie Ajax do serwera.
Na serwerze sprawdzamy poprawność pól formularza z tym co mamy w bazie danych.

  1. W przypadku błędu (np. brak użytkownika o podanym loginie) zwracamy odpowiedź z kodem błędu po stronie klienta - 400 lub niepoprawna autoryzacja - 401. Ajax odbiera tą odpowiedź i obsługuje ją traktując jako błąd.

Lub

  1. W przypadku błędu zwracamy odpowiedź z kodem powodzenia - 200. Ajax odbiera tą odpowiedź i obsługuje ją traktując jako sukces (mimo, iż w formularzu są błędy).

Która opcja jest prawidłowa?

Pozostało 580 znaków

2018-11-21 17:52
0

Kody 200 są kodami powodzenia. Natomiast kody 400 błędu klienta, a 500 błędu serwera.


"Trolling is a art"
edytowany 1x, ostatnio: Hispano-Suiza, 2018-11-21 17:52
Dziękuję, natomiast nie jest to odpowiedź na moje pytanie :) - Wiara czyni cuda 2018-11-21 17:53

Pozostało 580 znaków

2018-11-21 18:18
Swr

Moim zdaniem:

  • jeśli jest to endpoint STRICTE pod walidacje to spodziewałbym się, że odpowiada 200 a w odpowiedzi muszę doszukać się szczegółów czy wszystko jest ok czy nie. Oczywiście mógłby odpowiadać 400 ale w przypadku np. błędnego przekazania jakichś parametrów przez co nie mógłby dokonać walidacji.
  • jeśli jest to endpoint który wykonuje jakąś akcję (inną niż walidacja) na podstawie przekazanych pól z formularza to wtedy 400 z jakimiś kodami błędów
edytowany 2x, ostatnio: Swr, 2018-11-21 18:23
A co jeśli jest to endpoint, które wykonuje akcję walidacji na podstawie przekazanych pól z formularza? :P - Wiara czyni cuda 2018-11-21 18:20
to chyba jest pierwszy podpunkt? :) - Swr 2018-11-21 18:22
Dokładniej dzieje się to podczas logowania do systemu więc chyba jednak druga opcja będzie dla mnie odpowiednia. Dzięki za pomoc. - Wiara czyni cuda 2018-11-21 18:53

Pozostało 580 znaków

2018-11-21 18:54
2
Swr napisał(a):
  • jeśli jest to endpoint który wykonuje jakąś akcję (inną niż walidacja) na podstawie przekazanych pól z formularza to wtedy 400 z jakimiś kodami błędów

Ja bym zwracał 422 (https://httpstatuses.com/422) + informację na temat każdego pola, co z nim jest nie tak. Chyba, że nie udało się coś innego niż walidacja, to oczywiście odpowiednie kody błędów 403, 404, 500 itd.

Nie spotkałem się jeszcze z endpointem tylko pod walidację, ale tu masz racje. Powinien zawsze zwracać 200, chyba, że walidacja się nie powiodła, to wtedy inny kod błędu. Przez nie powiodła rozumiem, że nie udał się sam proces walidacji, a nie, że input miał niepoprawne dane. Jak miał niepoprawne dane to i tak 200, bo w końcu po to jest ten endpoint.

edytowany 4x, ostatnio: Desu, 2018-11-21 18:58
422 - w sumie ten sam kod zwracam w aplikacji z którą pracuje aktualnie ;) - Swr 2018-11-21 20:18

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0