Скажіть, що у мене є кінцева точка REST, яка приймає ціле число в якості параметра:
/makeWaffles?numberOfWaffles=3
У цьому випадку я хочу, щоб число було позитивним, оскільки я не можу зробити негативну кількість вафель (а запитувати 0 вафлі - це марна трата часу). Тому я хочу відхилити будь-який запит, який не містить додатного цілого числа. Я також хочу відхилити запит, який перевищує деяке максимальне ціле число (скажімо поки що це MAX_INTEGER).
У разі, якщо хтось запитує непозитивну кількість вафлі, я повинен повернути статус HTTP 400 (поганий запит)? Моя початкова думка - так: це неправдиве число для заповнення запиту. Однак, RFC не згадує бізнес-правил як причину, щоб кинути їх:
Код стану 400 (неправильний запит) вказує на те, що сервер не може або не обробляє запит через те, що сприймається як помилка клієнта (наприклад, синтаксис неправильного запиту, неправильне обрамлення повідомлення запиту або оманливе маршрутизація запиту).
Правило бізнесу не підпадає під жоден із цих трьох прикладів. Це синтаксично правильно, правильно оформлено, і це не обманний запит.
Тож чи варто повернути стан HTTP 400 (неправильний запит), якщо параметр є синтаксично правильним, але порушує правило бізнесу? Або є більш підходящий статус для повернення?