パラメーターとして整数を使用するRESTエンドポイントがあるとします。
/makeWaffles?numberOfWaffles=3
この場合、負の数のワッフルを作ることができないため、この数を正にしたいです(そして、0のワッフルを要求するのは時間の無駄です)。したがって、正の整数を含まない要求を拒否したいと思います。また、最大の整数を超えるリクエストを拒否したい(今はMAX_INTEGERであるとしましょう)。
誰かが非正数のワッフルをリクエストした場合、HTTP 400(Bad Request)ステータスを返すべきですか?私の最初の考えはイエスです:それは私がリクエストを完了するための有効な数字ではありません。ただし、RFCでは、ビジネスルールをスローする理由として言及していません。
400(Bad Request)ステータスコードは、クライアントエラー(たとえば、不正な要求構文、無効な要求メッセージのフレーミング、または不正な要求ルーティング)が原因でサーバーが要求を処理できないか、処理しないことを示します。
ビジネスルールは、これら3つの例のいずれにも該当しません。これは構文的に正しく、適切にフレーム化されており、不正なリクエストルーティングではありません。
パラメータが構文的に正しいが、ビジネスルールに違反している場合、HTTP 400(Bad Request)ステータスを返す必要がありますか?または、返すのに適切なステータスがありますか?