spring cloud feign异步调用,springcloud中使用feign方式上传文件
目录
假装远程调用接口传参失败这是调用者这是假装的客户这是被调者假装远程调用的注意点定义的做远程调用的美国石油学会(美国石油协会)接口服务微服务中的控制器的参数绑定
Feign远程调用接口传参失败
我在做一个微服务调用的时候出现了被调接口传参失败问题
假装是通过超文本传送协议(超文本传输协议的缩写)协议调用服务的,后来发现是因为入地点(地面进入点)和马平不一致,还有使用假装时要记得给实体类加无参构造注解
同时这些注解都尽量一致,不然微服务调病菌很麻烦。
这是调用者
这是feign的client
这是被调者
Feign远程调用的注意点
在使用假装的过程中遇到了一些问题,所以在这里做以下总结:
定义的做远程调用的api接口
中的方法参数列表中的参数都必须都要打上@RequestParam("value ")注解**,否则调用会报405异常,这一点是和控制器中不一样的,控制器中的方法只要参数名和前台传入的参数键名对应上就能自动绑定上参数
复杂类型用必须打上@请求体注解
service微服务中的Controller的参数绑定
如果参数列表中有复杂类型,请使用邮政请求,使用得到请求会报错误的请求错误,且需要打上@请求体注解,而普通基本类型可以不用打上@RequestParam注解可自动绑定参数
如有其它问题,也欢迎补充,放一下代码:
api:
@FeignClient(MS-ADMIN-SERVICE )公共接口fixfeignsservice { @ get mapping(/fix )公共ListFixInfo find all();@ post mapping(/fix/add )public int insert(@ request body fix info fix info);@ post mapping(/fix/limit by param )public LayUIPageBean limit by param(@ request body fix info fix info,@ request param( page )Integer page,@ request param( limit )Integer limit);@ post mapping(/fix/del byids )public boolean del byids(@ request param( ids[])Long[]ids);@ get mapping(/fix/find byid )public fix info find byid(@ request param( id )Long id);@PostMapping(/fix/update )布尔更新(@ request body fix info fix info);}服务微服务
@ rest controller @ request mapping(/fix )@ SLF 4j公共类FixInfoController { @ auto wired private FixInfoService FixInfoService;@ get mapping( )public list fix info find all(){ list fix info all=fixinfoservice。find all();全部退回;} @ post mapping(/add )public int insert(@ request body fix info fix info){ return fix infoservice。插入(修复信息);} @ post映射(/limit by param )public LayUIPageBean limit by param(@ request body fix info fix info,Integer page,Integer limit){ LayUIPageBean LayUIPageBean=new LayUIPageBean();PageHelper.startPage(page,limit);ListFixInfo all=fixinfoservice。findbyparam(fix info);pagenfoxinfo pagenfo=new pagenfo(all);返回layuipagebean。set count((int)pageinfo)。gettotal()).setData(pageinfo。getlist());} @ post mapping(/del byids )public boolean del byids(@ request param( ids[])Long[]ids){//log。info( id ids[0]);布尔标志=fixinfoservice。delbyids(ids);返回标志;} @ get mapping(/find byid )public FixInfo find byid(Long id){ return fixinfoservice。查找byid(id);} @ post mapping(/update )公共布尔更新(@ request body fix info fix info){ return fix info service。更新(修复信息);}}以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。