Jsonのみを受け入れ、jsonのみを出力するWebサービスを作成しています。
したがって、他の形式が要求された場合、適切なステータスコードを返す必要があります。
私には2つの選択肢があるようです:
誰かが2つのコードのセマンティクスについて私を啓発できれば素晴らしいと思います。
406は、リクエストヘッダーの受け入れに基づいて応答できない場合にサーバーから返されます(つまり、のみ XMLが必要であることを示すAcceptヘッダーがあります)。
415は、リクエストで送信されたエンティティ(POSTまたはPUT)のコンテンツ)にサポートされていないメディアタイプがある(つまり、XMLを送信した)ときにサーバーから返されます。
だから.. 406欲しいものを送信できないとき、415欲しいものを送信できないとき。
お役に立てば幸いです!
Accept
ヘッダーが送信された場合、フルフィルできません。Content-Type
は送信できますが、使用できません。RFC2616 を引用するには:
406受け入れられません
要求によって識別されたリソースは、要求で送信された受け入れヘッダーに従って受け入れられないコンテンツ特性を持つ応答エンティティを生成することができるだけです。
クライアントがサービスを照会するとき、送信したAccept*
ヘッダーを確認してください。 application/json
(または*/*
などのワイルドカード)と一致しない場合は、これを返します。応答には、「ここでJSONのみを提供する」と示されている必要があります。
415サポートされていないメディアタイプ
要求のエンティティが、要求されたメソッドの要求されたリソースでサポートされていない形式であるため、サーバーは要求の処理を拒否しています。
415 Unsupported Media Type
を返すだけで、「クライアントはJSONではない何かを送信したため、それを処理できません」の最小応答になります。 「JSONを送信する必要がある」ことを示すヘッダーがあるかどうかわからない