Spring defaultContentType已忽略

Spring defaultContentType已忽略,spring,rest,spring-mvc,Spring,Rest,Spring Mvc,我有一个具有以下mvc设置的Spring 3.2.4应用程序: @Configuration public class WebConfig extends WebMvcConfigurationSupport { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/assets/**").addRe

我有一个具有以下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);
    }
当我访问控制器的url(如/rest/products.json)时,我得到json响应,通过/rest/products.xml,我得到了预期的xml

但当我访问/rest/products时,我得到了XML,但我希望得到JSON,因为我将其设置为默认内容类型

Spring似乎忽略了这一点。

说:

当两个请求路径都不存在时,将使用此内容类型 扩展名、请求参数和Accept标头都会有所帮助 确定请求的内容类型

因此,至少有三种方法可以告诉Spring您尝试接收哪种格式。我的猜测是,您仍然以某种方式告诉Spring,您希望以XML的形式获取数据,可能是在请求参数中,或者(更可能是因为它不太可见)在头中

尝试检查请求的标题。

显示:

当两个请求路径都不存在时,将使用此内容类型 扩展名、请求参数和Accept标头都会有所帮助 确定请求的内容类型

因此,至少有三种方法可以告诉Spring您尝试接收哪种格式。我的猜测是,您仍然以某种方式告诉Spring,您希望以XML的形式获取数据,可能是在请求参数中,或者(更可能是因为它不太可见)在头中


尝试检查请求的标题。

我是从确实发送了accpet标题html和xml的浏览器调用它的,因此导致rest接口返回xml响应,而不是json/我是从确实发送了accpet标题html和xml的浏览器调用它的,从而导致rest接口返回xml响应而不是json/