Spring MVC を使用して、既に JSON と XML の両方のメディア形式で動作するコントローラーを用意しています。コンテンツ ネゴシエーション構成では、Accept ヘッダーのみに依存し、「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を期待していましたが...