1

AcceptRESTful エンドポイントで受信したヘッダーに基づいて、さまざまなコンテンツ タイプを提供したいと考えています。

application/myapp-v1.0+json
application/myapp-v1.0+xml

これを行う方法はあります@ResponseBodyか?HttpMessageConverterオブジェクトを返すだけでハンドルがJacksonを呼び出せるようにすることで便利なショートカットのように思えますが、それを機能させることはできません。複数の MimeType を接続すると、常に 406 応答が返されます。

この反復では、自分でリクエスト ヘッダーをクエリし、適切なビュー ハンドラーを自分で返すことになりましたが、将来これを再訪してもかまいません。

4

2 に答える 2

0

Spring 3.1を使用している場合は、を使用してこれを行うことができます@RequestMapping。アノテーションの3.1の新機能RequestMappingは、次のメンバーです。

  1. consumes()Content-type--リクエストヘッダーでフィルタリングできます。
  2. produces()Accept--リクエストヘッダーでフィルタリングできます。

いくつかの単純な式を適用して、より堅牢にする機能もあります。

@RequestMapping(consumes = {"application/json", "application/xml"})

@RequestMapping(consumes = {"!text/plain"})
于 2012-08-21T18:23:41.293 に答える
0

この SO の質問で提案されている内容に沿って、おそらく何かを行うことができます。

Spring MVC でのカスタム Accept ヘッダーの管理

class MyAppV1JsonConverter extends MappingJacksonHttpMessageConverter{
    public MyAppV1JsonConverter (){
        super(MediaType.valueOf("application/myapp-v1.0+json"));
        // OR setSupportedMediaTypes(Collections.singletonList(MediaType.valueOf("application‌​/myapp-v1.0+json")));
    }
}

..

于 2012-08-21T19:19:07.400 に答える