服務器傳到前端的數據格式從josn變成xml

1、本身spingboot項目是用@RestController註解,返回結果也是json格式

2、 jackson-dataformat-xml這個依賴,它是提供了jackson將實體類轉化爲xml相關的作用。 而本身jackson是可以將實體類轉化爲json的,所以這樣Jackson是可以將實體類轉化爲兩種類型的數據 ,而具體要轉化爲哪一種數據,是要看http請求裏面的accept頭信息

瀏覽器chrome的accept是  Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 ,然後服務器會根據accept來決定是返回xml還是json,由於瀏覽器accept只有最後的*/*是匹配 application/json的,而application/xml在*/*前面,優先級比json高,所以用瀏覽器直接調用是會優先返回xml格式的。

解決方案有兩種:
1.自己調用接口的時候修改accept信息,改爲application/json  (postman之類的工具)
2.添加依賴        

<dependency>
   <groupId>com.fasterxml.jackson.jaxrs</groupId>
   <artifactId>jackson-jaxrs-xml-provider</artifactId>
</dependency>

然後就可以使用後綴來調用相關的接口獲取對應格式的數據了
比如我有個url  localhost/get/user 返回一個用戶數據
添加了上面的依賴後,如果想獲取xml格式的,就使用localhost/get/user.xml來調用接口
如果想獲取json格式的,就使用localhost/get/user.json來調用接口
它的原理是服務器根據後綴主動修改了accept信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章