【发布时间】:2015-01-26 22:03:40
【问题描述】:
使用 Spring MVC,我的控制器已经适用于 JSON 和 XML 媒体格式。 在内容协商配置中,我想只依赖 Accept header,并引入自定义名称媒体类型,例如:“myXml”
我的配置:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer
.favorPathExtension(false)
.favorParameter(false)
.ignoreAcceptHeader(false)
.useJaf(false)
.mediaType(MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_JSON)
.mediaType(MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_XML)
.mediaType("myXml", MediaType.APPLICATION_XML)
.defaultContentType(MediaType.APPLICATION_JSON);
}
}
我的控制器:
@RequestMapping(value = "/manager/{id}",
method = RequestMethod.GET,
produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE}
)
@ResponseBody public Manager managers(@PathVariable long id){
return repo.getManagerById(id);
}
效果很好,Accept header: application/json 产生 JSON,application/xml 产生 XML。其他任何内容都会返回 406 Not Acceptable,即使是 myXml。
虽然我期待 xml...
【问题讨论】:
标签: xml json spring spring-mvc content-negotiation