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

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?

0

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

1

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
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.

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