これは動作します:
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"}) {
.......
}
次のように別の値を追加すると、失敗してこれがわかります。
指定されたHTTPメソッドは、リクエストされたリソースでは許可されていません(リクエストメソッド 'POST'はサポートされていません)
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json","content-type=application/xml"}) {
.......
}
これは、Springが2つのcontent type値に「AND」関係があると考えているためだと思いますが、代わりに「OR」にしたいのです。
助言がありますか?
ありがとう!
content-type=application/json,application/xml
を試しましたか?
それが機能するかどうかはわかりませんが、2つのcontent-type
ヘッダーをそこに配置すると、1つだけが勝つと思います。
[〜#〜]または[〜#〜]
異なるcontent-type
ヘッダーを持つ同じメソッドで2つのRequestMapping
アノテーションを使用する可能性はありますか?
Spring 3.1.xを使用している場合。 @RequestMappingアノテーションのconsumes、produces属性を使用して見ることができます。改善に関する春のブログ投稿は次のとおりです。
http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/
上記のドキュメントの抜粋:
@RequestMapping(value="/pets", headers="Content-Type=application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
に置き換えられます:
@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
さらに、複数のメディアタイプが必要な場合。以下を実行できます。
produces={"application/json", "application/xml"}
consumes={"application/json", "application/xml"}