1

我有一个带有以下 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 这样的控制器的 url 时,我得到 JSON 响应,通过 /rest/products.xml 我得到预期的 XML。

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

这似乎被 Spring 忽略了。

4

1 回答 1

1

Spring文档说:

当请求路径扩展、请求参数和 Accept 标头都无法帮助确定请求的内容类型时,将使用此内容类型。

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

尝试检查您的请求的标头。

于 2013-10-03T19:33:07.417 回答