我有一个使用 Spring MVC 开发的 RESTful Web 服务,无需任何配置,我就可以从带有 @ResponseBody
注释的 Controller 方法返回对象,并将其序列化为 JSON。只要请求中的 Accept header 未设置或者为 application/json
,此操作就会起作用。
由于我受到 GitHub API 规范的启发,我想为我的 API 实现自定义 mime 类型,如 GitHub does ,例如:application/vnd.myservice+json
。但随后我需要告诉 Spring MVC 我的 Controller 可以提供此 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>
它应该只适用于这些更改
关于spring - 在 Spring MVC 中管理自定义 Accept header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027668/