手动获取内容协商产生的视图

时间:2018-02-27 13:53:53

标签: spring-boot

我查看了文档以确定如何调用以获取内容协商返回的相同视图,而我无法找到如何执行此操作。

我已经配置内容协商来返回XML和JSON,只要响应能够正常工作,但我还需要手动“调用”内容协商。

我们在数据库中存储请求/响应,我想与我的对象调用内容协商,并让它返回JSON / XML,就像回复一样。我知道我可以通过检查accept header,queryParam和defaults来完成工作;但是,我更愿意使用相同的方法进行内容协商。

任何人都知道如何使用我的响应对象手动调用“内容协商”并让它确定是否应该像回复那样返回XML / JSON?

1 个答案:

答案 0 :(得分:0)

好的,经过一些调试,我发现了什么对我的情况有用。

使用下面列出的手动配置的内容协商。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    public static final String FORMAT_PARAM = "format";

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false)
                  .favorParameter(true)
                  .parameterName(FORMAT_PARAM)
                  .useJaf(false)
                  .defaultContentType(MediaType.APPLICATION_XML)
                  .mediaType("xml", MediaType.APPLICATION_XML)
                  .mediaType("json", MediaType.APPLICATION_JSON);
    }

}

我可以将ContentNegotiationManager注入需要此信息的服务,并调用resolveMediaTypes,这将获得将在响应中使用的媒体类型。