Jestem na rozdrożu z pewnym projektem interfejsu API dla klienta (JS w przeglądarce) do rozmowy z serwerem. Używamy konfliktu HTTP 409 do przedstawienia niepowodzenia działania z powodu blokady bezpieczeństwa. Blokada satefy zapobiega tworzeniu przypadkowych zmian w systemach produkcyjnych naszych klientów. Zadanie polegało na tym, aby obsługiwać 409 nieco bardziej wdzięcznie na kliencie, aby wskazać, dlaczego określone wywołanie interfejsu API nie powiodło się.
Moim rozwiązaniem było zawinięcie modułów obsługi błędów wszystkich naszych wywołań AJAX, które wyświetlą powiadomienie klientowi, gdy coś zawiedzie z powodu 409 - wszystko jest w porządku i działa dobrze z innymi błędami 4XX i 5XX, które używają tego samego mechanizmu.
Pojawił się problem, gdy jeden z naszych operatorów obsługi tras odpowiada 409s na wystąpienie błędu logiki biznesowej - moje opakowanie AJAX zgłasza, że blokada bezpieczeństwa jest włączona, podczas gdy istniejąca obsługa błędów klienta zgłasza, co (uważa), że problem jest związany z ciałem odpowiedzi. Prostym rozwiązaniem byłaby zmiana odpowiedzi osoby obsługującej lub kodu statusu, którego używamy do przedstawienia blokady bezpieczeństwa.
Co prowadzi mnie do mojego skrzyżowania: czy kody stanu HTTP powinny być nawet używane do reprezentowania błędów logiki biznesowej? To pytanie dotyczy tego samego problemu, z którym mam do czynienia, ale nie zyskało dużej przyczepności. Jak zasugerowano w odpowiedzi na link, skłaniam się ku użyciu HTTP 200 OK z odpowiednią treścią do reprezentowania błędów w logice biznesowej.
Czy ktoś ma tu jakieś mocne opinie? Czy ktoś jest w stanie przekonać mnie, że to niewłaściwy sposób reprezentowania porażki?
400 Bad Request
ponieważ ogólny kod HTTP wydaje się najlepiej obejmować błędy logiki biznesowej jako klasę.
400 Bad Request
gdy brakuje danych lub nie można ich odczytać / przeanalizować. To znaczy, że same dane żądania są w jakiś sposób złe.
400 Bad Request
. Powodem tego rozdzielenia jest to, że przyszłe systemy, twórcy lub czytelnicy dokumentów mogą być zdezorientowani przez twoje odchylenie od światowego standardu.