Powiedz, że mam punkt końcowy REST, który przyjmuje liczbę całkowitą jako parametr:
/makeWaffles?numberOfWaffles=3
W tym przypadku chcę, aby liczba była dodatnia, ponieważ nie mogę zrobić ujemnej liczby gofrów (a żądanie 0 gofrów to strata czasu). Chcę więc odrzucić każde żądanie, które nie zawiera dodatniej liczby całkowitej. Chcę również odrzucić żądanie, które przekracza pewną maksymalną liczbę całkowitą (powiedzmy na razie, że jest to MAX_INTEGER).
W przypadku, gdy ktoś zażąda nie dodatniej liczby gofrów, czy powinienem zwrócić status HTTP 400 (Błędne żądanie)? Moje pierwsze zdanie brzmi „tak”: nie jest to dla mnie prawidłowy numer, aby zrealizować prośbę. Jednak RFC nie wymienia reguł biznesowych jako powodu do jego rzucenia:
Kod statusu 400 (Błędne żądanie) wskazuje, że serwer nie może lub nie przetworzy żądania z powodu czegoś, co jest postrzegane jako błąd klienta (np. Źle sformułowana składnia żądania, nieprawidłowe sformułowanie komunikatu żądania lub oszukańczy routing żądania).
Reguła biznesowa nie mieści się w żadnym z tych trzech przykładów. Jest poprawny pod względem składniowym, ma odpowiednie ramy i nie jest zwodniczym routingiem żądań.
Czy powinienem więc zwrócić status HTTP 400 (Błędne żądanie), jeśli parametr jest poprawny pod względem składniowym, ale narusza regułę biznesową? Czy jest bardziej odpowiedni status do zwrócenia?