Wie konfiguriere ich benutzerdefinierten MediaType in Spring MVC?
Mit Spring MVC habe ich Controller, die bereits für JSON- und XML-Medienformate arbeiten. In der Content Negotiation-Konfiguration möchte ich mich nur auf den Accept-Header verlassen und einen benutzerdefinierten Namen für den Medientyp einführen, zum Beispiel: "myXml"
Meine Konfiguration:
@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);
}
}
Meine Steuerung:
@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);
}
Es funktioniert ziemlich gut, Überschrift akzeptieren:application/json
produziert JSON,application/xml
erzeugt XML. Alles andere gibt 406 zurück. Nicht akzeptabel, selbstmyXml
.
Ich habe allerdings XML erwartet ...