これが私のリクエストURLです:
http://server.com/app/user/getuser/?userId=9999
userId
はクエリパラメータであることに注意してください。埋め込みパスパラメータではありません。
リクエストURLが http://server.com/app/user/getuser/9999 で、ID 9999がデータベースに存在しない場合、404を使用する必要があることを理解しています。
しかし、userId
がクエリパラメータである場合にどのHTTPステータスを使用する必要がありますか?現在、404ではなく400を返しています。
404 Not Foundを使用します。
RFC 7231 は400 Bad Requestこのような応答:
400(Bad Request)ステータスコードは、クライアントエラーであると認識されている何か(たとえば、不正なリクエスト構文、無効なリクエストメッセージフレーミング、または不正なリクエストルーティング)のために、サーバーがリクエストを処理できない、または処理しないことを示します。
...リクエストが有効で、存在しないリソースにアクセスしようとしているだけなので、404 Not Foundステータスの方が適していると思います。 RFC 7231 は、次のようにその意味を定義します。
404(見つかりません)ステータスコードは、オリジンサーバーがターゲットリソースの現在の表現を見つけられなかったか、存在することを開示する意思がないことを示します。