私は、JavaとSpring Frameworkを使用してREST APIに取り組んでいます。現在、サーバーからのメッセージをServer-Response
というカスタムHTTPヘッダーで返します。これは、エラーが発生し、正常な要求が完了した場合に使用されます。 この目的のためにカスタムHTTPヘッダーを使用していますか?応答メッセージ用のカスタムヘッダーの使用。悪い練習?
なぜ私はこれを行いましたか?
- オブジェクトにはボディが必要ですが、追加の文字列レスポンスが必要な場合があります。
- Javaは厳密に型指定されています。
List<Object>
を返すと、追加の文字列を返すことはできません。 - サーバーからのメッセージは、グローバル例外ハンドラが提供するメッセージよりも具体的でなければなりません。
なぜこれをしないのですか?
- 春
String
応答を可能にする、例外が別の方法で処理できるように@ExceptionHandler
アノテーションを提供します。 - ヘッダーには、エラーメッセージなどの重要な情報を入れないでください。
サンプルは要求
私は、次の例のURLから場所のリストを取得することができますGET:https://fakeurl.com/api/locations
リクエストヘッダ
- は受け入れ:テキストを/ html、application/x HTML + XML、アプリケーション/ XML、Q = 0.9、画像/ WEBP、/; Q = 0.8
- はエンコーディングを受け入れる:、GZIPを収縮、SDCH言語を受け入れ:EN-US、EN; Q = 0.8
- Cache-Control:no-cache接続:キープアライブ
- アップグレード不安 - 要求:1
- ユーザーエージェント:Mozilla/5.0(Windows NT 6.1;ヤモリのような WOW64)のAppleWebKit/537.36(KHTML、)クローム/ 50.0.2661.94 サファリ/ 537.36
- ステータスコード:200 OK
レスポンスヘッダ
- のContent-Type:アプリケーション/ json; charset = UTF-8
- 日付:Wed、11 May 2016 15:41:03 GMT
- 有効期限:1969年12月31日水曜日ES T期限切れ:-1
- サーバー:Apache-Coyote/1。1
- サーバーの応答:すべての場所を正常に取得しました!
- 転送エンコード:チャンク
- X-Powered-By:Servlet 2.5; JBossの-5.0/JBossWeb-2.1
レスポンスボディ
[
{"locId":1,"descr":"New York","activeStatus":"ACTIVE"},
{"locId":2,"descr":"Los Angelas","activeStatus":"ACTIVE"},
{"locId":3,"descr":"Canada","activeStatus":"ACTIVE"},
{"locId":4,"descr":"Mexico","activeStatus":"ACTIVE"},
{"locId":5,"descr":"Nebraska","activeStatus":"ACTIVE"},
{"locId":6,"descr":"Texas","activeStatus":"ACTIVE"},
{"locId":7,"descr":"Michigan","activeStatus":"ACTIVE"}
]
明確な答えはありませんが、ヘッダーは応答ではありません。それはメタデータです。あなたはいつもあなたが好きなすべてのfiledsを含むカスタム 'Response'オブジェクトを返すことができます。http://stackoverflow.com/questions/12806386/standard-json-api-response-format – zapl
;それはまさに私が探していたものです。私は1年前にこのことを知りたがっています。 –