1. ホーム
  2. http

[解決済み] HTTPヘッダとレスポンスボディのどちらでエラーメッセージを返すか?

2023-03-05 16:47:12

質問

iPhoneとAndroidのクライアントに公開されるRESTサービスを持っています。現在、私は HTTP コード 200、400、401、403、404、409、500 などに従っています。

私の質問は、エラーの理由/説明/原因を置くために推奨される場所はどこですか?REST APIでは、このようにヘッダーに常にカスタムReasonを持つ方が理にかなっているのでしょうか?

< HTTP/1.1 400 Bad Request - Missing Required Parameters.
< Date: Thu, 20 Dec 2012 01:09:06 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Connection: close
< Transfer-Encoding: chunked

それともJSONでResponse Bodyに入れた方が良いのでしょうか?

< HTTP/1.1 400 Bad Request
< Date: Thu, 20 Dec 2012 01:09:06 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: application/json
{ "error" : "Missing Required Parameters" }

どのように解決するのですか?

400.xエラーコードについて、HTTP仕様から引用します。

4xx クラスのステータスコードは、クライアントがエラーを起こしたような場合に使用されます。 がエラーを起こしたと思われる場合に使用されます。HEAD リクエストに応答する場合を除き サーバーは、エラー状況の説明と、それが一時的なものか永続的なものかを含むエンティティを含めるべきです (SHOULD)。 の説明と、それが一時的なものなのか永続的なものなのかを含むエンティティを含めるべきです。これらの ステータスコードは、どのようなリクエストメソッドにも適用できる。ユーザーエージェントは は,含まれるすべての実体を利用者に表示すべきである。

エラーメッセージは、JSON、プレーンテキスト、フォーマットされたHTML、その他利用したいフォーマットなど、HTTPレスポンスのボディにエンティティとして含めることがベストプラクティスです。