SpringCloud FeignClient呼叫返回結果為null。
SpringCloud FeignClient呼叫返回結果為null。
(1)遠端服務如下:
@ApiOperation("[+]獲取系統所有的專案")
@RequestMapping(value="/all", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public AppResponse<List> all() {
// 1、分步查詢,先查出所有專案
// 2、再查詢這些專案圖片
List<ProjectVo> prosVo = new ArrayList<>();
// 1、連線查詢,所有的專案left join 圖片表,查出所有的圖片
// left join:笛卡爾積 A*B 1000萬*6 = 6000萬
// 大表禁止連線查詢;
List<TProject> pros = projectInfoService.getAllProjects();
for (TProject tProject : pros) {
Integer id = tProject.getId();
List<TProjectImages> images = projectInfoService.getProjectImages(id);
ProjectVo projectVo = new ProjectVo();
BeanUtils.copyProperties(tProject, projectVo);
。。。。。。。。。
return AppResponse.ok(prosVo);
}
(2)FeignClient定義如下:
@FeignClient(value=“SCW-PROJECT”,fallback=ProjectInfoServiseFeignExceptionHandler.class)
public interface ProjectInfoServiseFeign {
@RequestMapping(value="project/all", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public AppResponse<List<ProjectVo>> all();
}
(3)使用FeignClient呼叫遠端服務程式碼省略。。。
每次返回結果都是null。因為無參,所以不是@RequestParam的問題;
經百度,發現可能是Feign在組裝Http請求去呼叫遠端服務時 請求頭引數有問題。所以加上【produces = MediaType.APPLICATION_JSON_UTF8_VALUE】。完美解決
總結:consumes定義了方法接受的Http的請求型別,produces則定義了Http請求返回的型別。
FeignClient,它的底層實現,就是根據定義的FeignClient,來組裝Http請求進行遠端呼叫,而Http預設的Content-type是x-www-form-urlencoded型別化。
因此,我們可以在FeignClient的定義上,指定produces = MediaType.APPLICATION_JSON_UTF8_VALUE,這樣,FeignClient在組裝Http請求的時候,就會在header裡面設定響應的資料型別為application/json;charset=UTF-8這樣,問題就完美解決。
相關文章
- 使用mysql 統計函式 結果為null時返回值改為0MySql函式Null
- 為毛 "typeof null" 的結果為 "object" ?NullObject
- 為什麼typeof null 的結果為 objectNullObject
- MyBatis 返回結果MyBatis
- iOS FMDB有返回結果集和無返回結果集iOS
- ISNULL 兩種寫法,得到兩種結果,返回空記錄與nullNull
- Cursor 作為引數傳遞並返回結果
- java使用mybatis 呼叫函式返回一個遊標結果集JavaMyBatis函式
- 通用結果類用於返回響應結果
- 你真的知道typeof null的結果為什麼是‘object‘嗎?NullObject
- JavaScript中Typeof返回的結果JavaScript
- AJAX的同步返回結果值
- Python返回多個結果Python
- C#呼叫Windows CMD命令並,返回輸出結果或錯誤資訊C#Windows
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- 從dba_extents返回結果為空 - Oracle10gOracle
- 動態返回結果的檢視
- 全域性統一返回結果類
- springboot返回結果包裝統一返回格式Spring Boot
- [踩坑]laravel 獲取一個model查詢結果中不存在的屬性返回NULLLaravelNull
- MySQL 按指定 ID 順序返回結果MySql
- Mysql按指定 ID 順序返回結果MySql
- item_get_app資料返回結果APP
- 分析後sql語句很快返回結果SQL
- 統一返回結果狀態資訊類
- golang通過反射使用json字串呼叫struct的指定方法及返回json結果Golang反射JSON字串Struct
- PHP JSON_decode 返回為 null 問題PHPJSONNull
- springcloud openfeign原理-1-FeignClient初始化SpringGCCloudclient
- PostgreSQL函式:返回表查詢結果集SQL函式
- 封裝ResultVO實現統一返回結果封裝
- Oracle中過程/函式返回結果集Oracle函式
- Oracle 儲存過程返回結果集|轉|Oracle儲存過程
- Oracle 儲存過程返回結果集 (轉)Oracle儲存過程
- fiddler 修改請求介面的返回結果
- 返回的 json 串 sessionId 為什麼是 nullJSONSessionNull
- 返回部分結果後,才報單行子查詢返回多行。
- Laravel 手動建立分頁返回物件結果集Laravel物件
- Python 工匠:讓函式返回結果的技巧Python函式