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這樣,問題就完美解決。
相關文章
- 為毛 "typeof null" 的結果為 "object" ?NullObject
- 為什麼typeof null 的結果為 objectNullObject
- 判斷 ORM 返回結果為空ORM
- ISNULL 兩種寫法,得到兩種結果,返回空記錄與nullNull
- MyBatis 返回結果MyBatis
- iOS FMDB有返回結果集和無返回結果集iOS
- java使用mybatis 呼叫函式返回一個遊標結果集JavaMyBatis函式
- PHP JSON_decode 返回為 null 問題PHPJSONNull
- springcloud openfeign原理-1-FeignClient初始化SpringGCCloudclient
- 返回的 json 串 sessionId 為什麼是 nullJSONSessionNull
- 通用結果類用於返回響應結果
- Python返回多個結果Python
- 你真的知道typeof null的結果為什麼是‘object‘嗎?NullObject
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- springboot返回結果包裝統一返回格式Spring Boot
- C#呼叫Windows CMD命令並,返回輸出結果或錯誤資訊C#Windows
- JavaScript中Typeof返回的結果JavaScript
- [踩坑]laravel 獲取一個model查詢結果中不存在的屬性返回NULLLaravelNull
- 全域性統一返回結果類
- Nacos Spring Cloud 使用@FeignClient 呼叫其他工程的介面SpringCloudclient
- .NET Core 處理 WebAPI JSON 返回煩人的null為空WebAPIJSONNull
- Math.min() < Math.max() 返回結果是什麼?為什麼?
- Solon 統一的返回結果調整
- fiddler 修改請求介面的返回結果
- item_get_app資料返回結果APP
- MySQL 按指定 ID 順序返回結果MySql
- Mysql按指定 ID 順序返回結果MySql
- springboot redisTemplate.opsForValue().setIfAbsent返回null原理Spring BootRedisNull
- Python 工匠:讓函式返回結果的技巧Python函式
- PostgreSQL函式:返回表查詢結果集SQL函式
- 統一返回結果狀態資訊類
- Gin 框架 JSON 格式返回結果的使用方式框架JSON
- 封裝ResultVO實現統一返回結果封裝
- python中函式如何返回多個結果?Python函式
- mybatis註解Select查詢List,返回有物件個數,但是為nullMyBatis物件Null
- SpringCloud之服務呼叫SpringGCCloud
- 以陣列 ans = [kelvin, fahrenheit] 的形式返回結果陣列
- Laravel 手動建立分頁返回物件結果集Laravel物件