我已經通過了其他類似的問題,但沒有爲我工作。Spring mvc:將默認的響應格式從xml更改爲json
默認全部我API的返回JSON爲響應:
因爲一些XML API的,我不得不添加傑克遜的XML
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
現在默認「無接受標題「所有回覆均爲XML。
我想有JSON作爲默認響應格式。
如DOC這裏所說:
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();
}
我很丟在這裏,我要的是默認的(無AcceptHeader)應該是JSON。 (API以String形式返回XML)
而且,當接受標題:「Application/xml」被定義時,則響應應該是XML。
任何意見都會有很大的幫助。
謝謝。
根據配置可以有效控制「mediaType的」參數返回的媒體類型。你嘗試像/的getXML mediaType的= XML – Stan
@Stan:不,我不能改變RequestMapping但我仍然會嘗試以查看結果 – Roxy
這不是請求映射註解,因爲我明白你說的與.parameterName到Spring (「mediaType的」)語句中使用該參數來檢查介質類型,以便有你的服務器端 – Stan