spring - 在 Spring MVC 中管理自定义 Accept header

标签 spring rest spring-mvc

我有一个使用 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/

相关文章:

java - Spring Boot、Thymeleaf 组合类验证

c++ - 使用 C++ REST SDK 将 Stream 响应转换为 byte[]

java - 使用 JAX-RS 的不区分大小写的 URL

spring-mvc - 使用 Spring-Data MongoDB 和 Spring MVC 更新对象/文档的模式

java - 在 spring 中用复选框绑定(bind)类中的 arraylist 的问题

java - 使用 spring data mongodb 和 kotlin 更新对象不起作用

java - 如何使 spring data jpa 生成的方法在空参数上抛出异常

java - 如何将不同的对象表示反序列化为 POJO?

python - Apache2:mod_wsgi 或 mod_python,哪个更好?

java - "Spring transaction"和 "Hibernate transaction"有什么区别