在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>
它应该与这些更改一起使用