SpringCloud中的Feign遠(yuǎn)程調(diào)用接口傳參失敗問(wèn)題
Feign遠(yuǎn)程調(diào)用接口傳參失敗
我在做一個(gè)微服務(wù)調(diào)用的時(shí)候出現(xiàn)了被調(diào)接口傳參失敗問(wèn)題
Feign是通過(guò)http協(xié)議調(diào)用服務(wù)的,后來(lái)發(fā)現(xiàn)是因?yàn)镚ep和Maping不一致,還有使用feign時(shí)要記得給實(shí)體類加無(wú)參構(gòu)造注解
同時(shí)這些注解都盡量一致,不然微服務(wù)調(diào)bug很麻煩。
這是調(diào)用者
這是feign的client
這是被調(diào)者
Feign遠(yuǎn)程調(diào)用的注意點(diǎn)
在使用feign的過(guò)程中遇到了一些問(wèn)題,所以在這里做以下總結(jié):
定義的做遠(yuǎn)程調(diào)用的api接口
中的方法參數(shù)列表中的參數(shù)都必須都要打上@RequestParam(“value”) 注解**,否則調(diào)用會(huì)報(bào)405異常,這一點(diǎn)是和controller中不一樣的,controller中的方法只要參數(shù)名和前臺(tái)傳入的參數(shù)鍵名對(duì)應(yīng)上就能自動(dòng)綁定上參數(shù)
復(fù)雜類型用必須打上@RequestBody注解
service微服務(wù)中的Controller的參數(shù)綁定
如果參數(shù)列表中有復(fù)雜類型,請(qǐng)使用Post請(qǐng)求,使用Get請(qǐng)求會(huì)報(bào)Bad Request錯(cuò)誤,且需要打上@RequestBody注解,而普通基本類型可以不用打上@RequestParam注解可自動(dòng)綁定參數(shù)
如有其它問(wèn)題,也歡迎補(bǔ)充,放一下代碼:
api:
@FeignClient("MS-ADMIN-SERVICE") public interface FixFeignService { ? ? @GetMapping("/fix") ? ? public List<FixInfo> findAll(); ? ? @PostMapping("/fix/add") ? ? public int insert(@RequestBody FixInfo fixInfo); ? ? @PostMapping("/fix/limitByParam") ? ? public LayUIPageBean limitByParam(@RequestBody FixInfo fixInfo, @RequestParam("page") Integer page, @RequestParam("limit") Integer limit); ? ? @PostMapping("/fix/delByIds") ? ? public boolean delByIds(@RequestParam("ids[]") Long[] ids); ? ? @GetMapping("/fix/findById") ? ? public FixInfo findById(@RequestParam("id") Long id); ? ? @PostMapping("/fix/update") ? ? boolean update(@RequestBody FixInfo fixInfo); }
service微服務(wù)
@RestController @RequestMapping("/fix") @Slf4j public class FixInfoController { ? ? @Autowired ? ? private FixInfoService fixInfoService; ? ? @GetMapping("") ? ? public List<FixInfo> findAll(){ ? ? ? ? List<FixInfo> all = fixInfoService.findAll(); ? ? ? ? return all; ? ? } ? ? @PostMapping("/add") ? ? public int insert(@RequestBody FixInfo fixInfo){ ? ? ? ? return fixInfoService.insert(fixInfo); ? ? } ? ? @PostMapping("/limitByParam") ? ? public LayUIPageBean limitByParam(@RequestBody FixInfo fixInfo,Integer page,Integer limit){ ? ? ? ? LayUIPageBean layUIPageBean = new LayUIPageBean(); ? ? ? ? PageHelper.startPage(page,limit); ? ? ? ? List<FixInfo> all = fixInfoService.findByParam(fixInfo); ? ? ? ? PageInfo<FixInfo> pageInfo = new PageInfo<>(all); ? ? ? ? return layUIPageBean.setCount((int)pageInfo.getTotal()).setData(pageInfo.getList()); ? ? } ? ? @PostMapping("/delByIds") ? ? public boolean delByIds(@RequestParam("ids[]") Long[] ids){ ? ? ? ? //log.info("id"+ids[0]); ? ? ? ? boolean flag= fixInfoService.delByIds(ids); ? ? ? ? return flag; ? ? } ? ? @GetMapping("/findById") ? ? public FixInfo findById(Long id){ ? ? ? ? return fixInfoService.findById(id); ? ? } ? ? @PostMapping("/update") ? ? public boolean update(@RequestBody FixInfo fixInfo){ ? ? ? ?return fixInfoService.update(fixInfo); ? ? } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的使用示例
- SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用流程詳細(xì)介紹
- SpringCloud Feign遠(yuǎn)程調(diào)用與自定義配置詳解
- SpringCloud Feign遠(yuǎn)程調(diào)用實(shí)現(xiàn)詳解
- SpringCloud學(xué)習(xí)筆記之Feign遠(yuǎn)程調(diào)用
- SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件
- SpringCloud基于Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的問(wèn)題小結(jié)
相關(guān)文章
SpringMVC使用MultipartFile實(shí)現(xiàn)文件上傳
這篇文章主要為大家詳細(xì)介紹了SpringMVC使用MultipartFile實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Spring Boot啟動(dòng)時(shí)調(diào)用自己的非web邏輯
在spring Boot中,有些代碼是WEB功能,例如API等,但是有些邏輯是非WEB,啟動(dòng)時(shí)就要調(diào)用并持續(xù)運(yùn)行的,該如何加載自己的非WEB邏輯呢,下面通過(guò)實(shí)例代碼給大家講解,一起看看吧2017-07-07Java中StringBuilder字符串類型的操作方法及API整理
Java中的StringBuffer類繼承于AbstractStringBuilder,用來(lái)創(chuàng)建非線程安全的字符串類型對(duì)象,下面即是對(duì)Java中StringBuilder字符串類型的操作方法及API整理2016-05-05Java+JFrame實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了Java+JFrame實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06fastjson全局日期序列化設(shè)置導(dǎo)致JSONField失效問(wèn)題解決方案
這篇文章主要介紹了fastjson通過(guò)代碼指定全局序列化返回時(shí)間格式,導(dǎo)致使用JSONField注解標(biāo)注屬性的特殊日期返回格式失效問(wèn)題的解決方案2023-01-01JAVA 創(chuàng)建線程池的注意事項(xiàng)
這篇文章主要介紹了JAVA 創(chuàng)建線程池的注意事項(xiàng),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包
這篇文章主要介紹了Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06