Content Types

    你可以配置 Spring MVC 如何从请求中确定所请求的媒体类型(例如,Accept 头、URL 路径扩展、查询参数和其他)。

    默认情况下,只有 Accept 头被选中。

    如果你必须使用基于 URL 的内容类型解析,考虑使用查询参数策略而不是路径扩展。参见 后缀匹配后缀匹配与 RFD,以了解更多细节。

    在 Java 配置中,你可以自定义请求的内容类型解析,如下例所示:

    1. @Configuration
    2. @EnableWebMvc
    3. public class WebConfig implements WebMvcConfigurer {
    4. @Override
    5. public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    6. configurer.mediaType("json", MediaType.APPLICATION_JSON);
    7. configurer.mediaType("xml", MediaType.APPLICATION_XML);
    8. }
    9. }

    下面的例子显示了如何在 XML 中实现同样的配置:

    1. <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>
    2. <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    3. <property name="mediaTypes">
    4. <value>
    5. json=application/json
    6. xml=application/xml
    7. </value>
    8. </property>
    9. </bean>