我查看了文档以确定如何调用以获取内容协商返回的相同视图,而我无法找到如何执行此操作。
我已经配置内容协商来返回XML和JSON,只要响应能够正常工作,但我还需要手动“调用”内容协商。
我们在数据库中存储请求/响应,我想与我的对象调用内容协商,并让它返回JSON / XML,就像回复一样。我知道我可以通过检查accept header,queryParam和defaults来完成工作;但是,我更愿意使用相同的方法进行内容协商。
任何人都知道如何使用我的响应对象手动调用“内容协商”并让它确定是否应该像回复那样返回XML / JSON?
答案 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,这将获得将在响应中使用的媒体类型。