Я прошел через другие подобные вопросы, но ничего не работало для меня.
Все мои API возвращают JSON как ответ по умолчанию:
Из-за некоторого XML API мне пришлось добавить jackson-xml
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
Теперь по умолчанию " Без заголовка принятия" Все ответы XML.
Я хотел бы иметь JSON в качестве формата ответа по умолчанию.
Как указано в документе:
https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc
Я реализовал следующую конфигурацию:
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true)
.useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON);
}
Случай 1:, если я создаю ignoreAcceptHeader(true)
, тогда все JSON даже XML API возвращает JSON.
Случай 2:, когда ignoreAcceptHeader(false)
, по умолчанию, является XML.
Я забыл упомянуть, что мой API выглядит так:
@RequestMapping(value = "/getXml", method = RequestMethod.GET)
public ResponseEntity<String> getXml( HttpServletRequest request)
throws JAXBException {
return returnXml();
}
Я совсем потерялся здесь. Все, что я хочу, это Default (Without AcceptHeader), должен быть JSON. (API возвращает XML как String)
И когда Accept Header: "Application/xml" определен, тогда ответ должен быть XML.
Любой совет будет очень полезен.
Спасибо.