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


问题内容

我有一个使用Spring MVC开发的RESTful
Web服务,无需任何配置,我可以从带@ResponseBody序列化为JSON的带注释的控制器方法中返回对象。一旦未设置请求中的Accept标头或将其设置为,此方法就会起作用application/json

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

知道怎么做吗?


问题答案:

您可能可以精确地执行正在执行的操作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>

它应该与这些更改一起使用