@RestController 返回資料格式 總結
阿新 • • 發佈:2018-12-14
以下總結基於本人手敲實驗結論,如有不對,歡迎留言討論指正
本文以application/xml,application/json兩種資料格式為例說明
以下兩點為基礎
1.前端請求Header的Accept引數指定返回資料格式(引數值的順序決定了優先順序)
2.後端RequestMapping(包括PostMapping,GetMapping等)的produces引數對資料格式進行限制(引數值的順序決定了優先順序)
總結:
① 期望資料格式的依賴包必須齊全,不齊全將發生406錯誤;
JSON是:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version> </dependency>
XML是:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.6.0</version>
</dependency>
② 基礎1和基礎2不相容(沒有重合的目標),返回的資料格式照基礎1,發生406錯誤,如下圖情況
③ 基礎1和基礎2多個目標重合,由基礎1引數值的順序決定
④ 基礎1預設,由基礎2的引數值順序決定
⑤ 基礎1基礎2都預設,依賴包都齊全的情況下(單一依賴包沒測),資料格式由List<HttpMessageConverter<?>>的轉換器順序決定,誰在前面就轉成誰;轉換器順序可以通過手動注入調整,在不手動注入的情況下,MappingJackson2HttpMessageConverter在前,所以,在完全預設又沒有手動注入轉換器的情況下,預設轉成json