我编写了一个带有get请求映射的方法,它给出了用户列表。由于jakson绑定依赖性是在JSON中给出响应。我也依赖于XML,这是Jackson Dataformat XML。所以,如果Accept是application / json,它返回JSON中的响应,如果它在application / xml中,则返回XML.But默认情况下它给出了JSON响应。所以,如果不存在,我想添加接受标题,并将其默认值设为application / xml。
@GetMapping(path="/getAll")
public List<User> getUsers(@RequestHeader(value= "Accept" ,required=false, defaultValue="application/xml") String Accept)
{
return service.findAll();
}
但是在上面的情况下,标题没有设置。
答案 0 :(得分:2)
为此,您需要修改控制器方法以返回ResponseEntity<List<User>>
,如下所示:
@GetMapping(path="/getAll")
public ResponseEntity<List<User>> getUsers(@RequestHeader(value= "Accept" ,required=false, defaultValue="application/xml") String Accept) {
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(location);
responseHeaders.set("Accept", "Value");
return new ResponseEntity<List<User>>(service.findAll(), responseHeaders, HttpStatus.CREATED);
}
答案 1 :(得分:0)
如果您只想从Spring启动应用程序响应XML,请使用以下自定义webMvcConfiguration
。设置一个默认的Accept
标题只是为了响应XML似乎不是一个好主意。
@Configuration
public class WebMvcConfiguration {
@Bean
public WebMvcConfigurer myWebMvcConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_XML);
}
};
}
}
如果您已使用自定义WebMvcConfigurerAdapter
,请覆盖上述configureContentNegotiation(...)
方法。