1. 程式人生 > >@RestController 返回資料格式 總結

@RestController 返回資料格式 總結

以下總結基於本人手敲實驗結論,如有不對,歡迎留言討論指正

本文以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