Spring defaultContentType被忽略

时间:2013-10-03 19:25:12

标签: spring rest spring-mvc

我有一个带有以下mvc设置的Spring 3.2.4应用程序:

@Configuration
public class WebConfig extends WebMvcConfigurationSupport  {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
    }

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.defaultContentType(MediaType.APPLICATION_JSON);
        configurer.mediaType("json", MediaType.APPLICATION_JSON);
        configurer.mediaType("xml", MediaType.APPLICATION_XML);
    }

当我访问我的控制器的网址时,例如/rest/products.json我得到了JSON响应,并通过/rest/products.xml我得到了预期的XML。

但是当我访问/ rest / products时,我获得了XML,但是我将JSON设置为默认内容类型。

这似乎被Spring忽略了。

1 个答案:

答案 0 :(得分:1)

The Spring documentation说:

  

当请求路径都不使用时,将使用此内容类型   扩展,也不是请求参数,也不是Accept标头可以提供帮助   确定所请求的内容类型。

因此,至少有三种方法可以告诉Spring您尝试接收哪种格式。我的猜测是,你仍然以某种方式告诉Spring你想要用XML获取数据,可能是在一个请求参数中,或者 - 更可能是因为它不可见 - 在一个标题中。

尝试检查您的请求标题。