[解決済み] 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レスポンスのボディにエンティティとして含めることがベストプラクティスです。
関連
-
[解決済み] IISファイルのダウンロードがハングアップ/タイムアウトする - sc-win32-status = 64
-
[解決済み] X-Forwarded-Forヘッダーが表示されないブラウザの理由
-
[解決済み] HTTPヘッダーの大文字と小文字は区別されますか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] リソースが既に存在する場合の POST に対する HTTP レスポンスコード
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] HTTP DELETE リクエストにエンティティボディは許されますか?
-
[解決済み] URLのプロトコルを継承するために、先頭のダブルスラッシュを使用することに何か不都合はありますか? 例:src="//domain.com"
-
[解決済み] REST、HTTP DELETEとパラメータ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.lang.NoClassDefFoundError: クラスを初期化できませんでした エラーの理由
-
[解決済み] HTTP_CLIENT_IPとHTTP_X_FORWARDED_FORの違いは何ですか?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み] HTTPとRESTの違いは何ですか?
-
[解決済み】BASIC認証でWebサイトからユーザーをログアウトさせる方法は?
-
[解決済み】URLのアンパサンドのエスケープについて
-
[解決済み】どのHTTPメソッドがどのCRUDメソッドと一致するか?
-
[解決済み】HTTP 301と308のステータスコードの違いは何ですか?
-
[解決済み] Cache-Control: privateとは何ですか?