SpringCloud:feign对象传参和普通传参及遇到的坑
对象传参:
#使用@RequestBody来指定传参对象
@RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)
ResultResponse<String> getCode(@RequestBody MatterCodeBO matterCodeBO);
注意:@RequestBody在一个方法内有且只有一个,不能同时存在两个!
普通传参:
#普通传参使用@RequestParam来指定参数
@RequestMapping(value = "taskApiController/getAll", method = RequestMethod.POST)
List<TaskVO> getAll(@RequestParam("name") String name);
注意:@RequestParam必须指定参数名("name"),否则报错:RequestParam.value() was empty on parameter 0
遇到的坑-1:
首先再次强调Feign是通过http协议调用服务的,重点是要理解这句话,
如果FeignClient中的方法有@PostMapping注解 ,则微服务TaskApiController中对应方法的注解也应当保持一致为@PostMapping,如果不一致,则会报404的错误
调用失败后会触发它的熔断机制,如果@FeignClient中不写@FeignClient(fallback = TaskFeignClientDegraded.class),会直接报错
11:00:35.686 [http-apr-8086-exec-8] DEBUG c.b.p.m.b.c.AbstractBaseController - Got an exception
com.netflix.hystrix.exception.HystrixRuntimeException: TaskFeignClient#getAll() failed and no fallback available.
at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:819)
at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:804)
遇到的坑-2:
报错信息:feign.FeignException:status 400 reading xxx#xxxx(String); content:
原因:因为feign的那个方法使用的@ReqestParam注解,这个接收的参数长度过长造成的,这也是feign就算使用post方法,参数也会放在请求地址后面,而不是放在请求体里面。
解决办法:将参数封装成对象,使用@RequestBody标明参数
文章转载至:https://blog.csdn.net/uotail/article/details/84673347
SpringCloud:feign对象传参和普通传参及遇到的坑的更多相关文章
- SpringCloud+Feign环境下文件上传与form-data同时存在的解决办法(2)
书接上文. 上文中描述了如何在 SpringCloud+Feign环境下上传文件与form-data同时存在的解决办法,实践证明基本可行,但却会引入其他问题. 主要导致的后果是: 1. 无法与普通Fe ...
- Java传参都是传引用变量的副本
最近做练习时碰到一个问题,Java到底是怎样传参的,经过查资料与实验,我发现Java传参都是传引用变量的副本值. 1 Java中的引用变量 1.1 字面值引用变量:即基本数据类型的引用变量 ,如 in ...
- vue初始化、数据处理、组件传参、路由传参、全局定义CSS与JS、组件生命周期
目录 项目初始化 组件数据局部化处理 子组件 父组件 路由逻辑跳转 案例 组件传参 父传子 子组件 父组件 子传父 子组件 父组件 组件的生命周期钩子 路由传参 第一种 配置:router/index ...
- [ 随手记6 ] C/C++ 形参、实参、按值传参、指针传参、引用传参
个人原创: 1. 形参:形式上的参数,一般多在函数声明.函数定义的参数上: 2. 实参:实体参数,有实际的值,在运算上被循环使用的值: 3. 按值传参:按值,就是把实际的值传给函数内部: 4. 指针传 ...
- Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合
Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...
- Apache ab测试工具使用方法(无参、get传参、post传参)(转)
转自Apache ab测试工具使用方法(无参.get传参.post传参) Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包, ...
- python2.7 操作ceph-cluster S3对象接口 实现: 上传 下载 查询 删除 顺便使用Docker装个owncloud 实现UI管理
python version: python2.7 需要安装得轮子: botofilechunkio command: yum install python-pip&& pip ...
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参
1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...
- Thinkphp5 对接百度云对象存储 BOS (上传、删除)
首先下载SDK包可以在 官网下载,或者在项目根目录使用composer . composer require baidubce/bce-sdk-php 压缩包里面有五个文件,实际运用到只有两个,然后放 ...
随机推荐
- www.heihei.work站长日记
____________2020-03-30_________________晴 昨天刚加的游客IP统计选取一部分查了下地址,小朋友你是不是有很多问号??? 36.99.136.142河南 电信 47 ...
- linux进阶之yum管理
一.部署私有repo源 1.官网下载需要的仓库: rsync -avrt --delete rsync://mirrors.ustc.edu.cn/centos/7/cloud/x86_64/open ...
- python3 列表转换为字符串
join将列表转换为字符串 list1 = ["张三","李四","王五"] a1 = ','.join(list1) print(a1) ...
- 1.2Linux 主要目录速查表
Linux 主要目录速查表 /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再 ...
- 国内镜像源 sources
Ubuntu18.04源 cat > /etc/apt/sources.list <<eof # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb ...
- Ubuntu 16.04安装PyCharm
PyCharm一个是Python集成开发环境,它既提供收费的专业版,也提供免费的社区版本.PyCharm带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Proj ...
- VMware vRealize Suite 8.4 发布 - 多云环境的云计算管理解决方案
VMware vRealize Suite 8.4.0, Release Date: 2021-04-15 概述 VMware vRealize Suite 是一种多云环境的云计算管理解决方案,为 I ...
- Mybatis学习-GetMybatisInMyHead
认知 Mybatis3 中文文档 练习代码 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结 ...
- openresty 学习笔记六:使用session库
openresty 学习笔记六:使用session库 lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Pr ...
- Jmeter- 笔记11 - 持续集成
CICD:持续集成 持续交付 进行持续集成的首选工具:Jenkins 性能测试中持续集成:Jenkins(管理集成) + Jmeter(性能工具) + ant(编译代码) ant安装配置步骤: 1.下 ...