在Spring MVC中管理自定义Accept标头

时间:2012-08-19 15:28:36

标签: spring rest spring-mvc

我有一个使用Spring MVC开发的RESTful Web服务,没有任何配置,我可以从被{序列化为JSON的@ResponseBody带注释的控制器方法返回对象。只要请求中的Accept标头未设置或application/json,就会生效。

由于我受到GitHub API规范的启发,我想为我的API实现GitHub does的自定义mime类型,例如:application/vnd.myservice+json。但是我需要告诉Spring MVC我的控制器可以提供这种mime类型,并且它应该由Json序列化(即org.springframework.web.servlet.view.json.MappingJacksonJsonView类)。

知道该怎么做吗?

1 个答案:

答案 0 :(得分:2)

您可以完全按照org.springframework.http.converter.json.MappingJacksonHttpMessageConverter执行操作。由于它不是最终类,您可以通过这种方式从这个转换出来:

class MyCustomVndConverter extends MappingJacksonHttpMessageConverter{
    public MyCustomVndConverter (){
        super(MediaType.valueOf("application/vnd.myservice+json"));
    }
}

然后以这种方式注册您的转换器:

<mvc:annotation-driven> 
   <mvc:message-converters register-defaults="true">
       <bean class="MyCustomVndConverter "/>
   </mvc:message-converters>
</mvc:annotation-driven>

它应该只适用于这些变化