关于feign调用的参数传递问题(@RequestBody和@RequestParam)
目录
- feign调用的参数传递问题
- 错误写法
- 正确写法
- body的正确形式
- feign传参总结
- 返回实体对象服务提供者
- restful传参服务提供者
- 传实体对象服务提供者
feign调用的参数传递问题
SpringCloud Feign报错:
java.lang.IllegalStateException: Method has too many Body parameters
上边的报错提示为body太多了,feign调用的方法里只能有一个body但是requestparam可以多个
错误写法
正确写法
异常原因:当使用Feign时,如果发送的是get请求,那么需要在请求参数前加上@RequestParam注解修饰,Controller里面可以不加该注解修饰。
body的正确形式
客户端:
服务端:
不加@RequestBody的话userDTO就拿不到值
feign传参总结
返回实体对象 服务提供者
Controller上有@RestController注解,没截上
实体对象实现序列化接口
服务调用者
restful传参 服务提供者
传两个参数
消费者
传实体对象 服务提供者
要想接收实体对象,必须加@RequestBody注解,注意这个注解最多只能有一个,不能传多个并且这个参数得放到最后面
消费者
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
浅谈@RequestBody和@RequestParam可以同时使用
目录 @RequestBody和@RequestParam可以同时使用吗 自己个人实际验证结果 在postman发送如下post请求,返回正常 body中参数如下 值得注意的地方 @RequestBody和@RequestParam注解使用说明 @RequestBody作用 @RequestParam作用 @RequestBody和@RequestParam可以同时使用吗 @RequestParam和@RequestBody这两个注解是可以同时使用的. 网上有很多博客说@RequestParam
-
feign实现传递参数的三种方式小结
需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 restful风格参数,用@PathVariable写着走就行了 传递方式二:传递数组类型的参数 不使用restful风格,直接用@RequestParam声明参数之间的对应关系. 传递方式三:传递带有对象的参数 1.使用restful风格的参数要用@Pathvarible声明参数对应关系,@Pathvariable用于
-
feign post参数对象不加@RequestBody的使用说明
目录 feign post参数对象不加@RequestBody 使用@RequestParam.@RequestBody 的正确姿势 背景 详细情况 小结一下 feign post参数对象不加@RequestBody 最近在做小程序调支付服务接口的一个功能,这个feign接口传参真的太费事. 代码我就改造了下,不直接上真实代码. 比如小程序调支付服务的订单查询接口,支付服务那边的controller的订单查询方法是: @ResponseBody @RequestMapping(value = "
-
SpringCloud Feign多参数传递及需要注意的问题
目录 Feign多参数传递及注意的问题 在服务提供者cloud-shop-userservice中新增几个方法 修改feign的UserService,新增对应的方法 在feign的controller中调用方法 重启修改过的服务,查看服务注册是否正常 使用工具调用这几个方法进行测试 Feign如何接收多个参数 1.API 2.Feign 3.controller Feign多参数传递及注意的问题 这边沿用前面的Eureka,Feign,Service 在服务提供者cloud-shop-user
-
关于feign调用的参数传递问题(@RequestBody和@RequestParam)
目录 feign调用的参数传递问题 错误写法 正确写法 body的正确形式 feign传参总结 返回实体对象服务提供者 restful传参服务提供者 传实体对象服务提供者 feign调用的参数传递问题 SpringCloud Feign报错: java.lang.IllegalStateException: Method has too many Body parameters 上边的报错提示为body太多了,feign调用的方法里只能有一个body但是requestparam可以多个 错误写法
-
解决Feign调用的GET参数传递的问题
目录 需求 思考 GET方式请求① GET方式请求② GET方式请求③ 需求 在消费方服务通过GET方式,访问服务提供方的接口,需要传递多参数,拆分成多个参数的方式访问,不太适合用在该场景,需要改造成合适的方式调用服务方的接口 思考 拆分成多个参数时,若GET请求的参数超过3个及以上时,便不适用该种方式请求服务,因为这样传递参数过于臃肿,可读性也比较差: 若改造成POST请求的方式,虽然解决参数过多的问题,但是也带来了其他的开销,参数被放到了body里面,然后请求到服务方提供的接口,服务方的
-
Feign调用服务各种坑的处理方案
1.编写被调用服务 @RefreshScope @RestController public class XXXController extends BaseController implements IndicatorsFeignApi{ @Resource private XXXService xxx; @Override public Wrapper<CommonVo> getXXXX(@RequestBody CommonDto commonDto) { try { CommonVo
-
使用feign调用接口时调不到get方法的问题及解决
目录 feign调用接口调不到get方法 feign调用拿不到数据 feign调用接口调不到get方法 记录今天在使用springcloud的feign调用接口时踩的坑. 调用的方法是get方法时调用不到接口的问题 1.feign调用时默认的请求方式是post请求,所以如果是要调用的请求为get请求,并且有参数传递时的解决方法: (1)在调用的接口上需要给参数添加@RequestParam注解 @RequestMapping(value = "/cust-archives", meth
-
Feign调用接口解决处理内部异常的问题
问题描述: 当使用feign调用接口,出现400-500-的接口问题时.会出错feign:FeignException.(因为是错误,只能用catch Throwable,不可使用catch Exception捕获异常)导致程序无法继续运行. 问题原因: 由于feign默认的错误处理类是FunFeignFallback会throw new AfsBaseExceptio导致外部无法捕获异常. package com.ruicar.afs.cloud.common.core.feign; impo
-
feign调用中文参数被encode编译的问题
目录 Feign调用中文参数被encode编译 原因 记录今天遇到的feign多参数问题 1.Post方式 2.Get方式 Feign调用中文参数被encode编译 原因 在实现一个feign调用时使用了Post请求,并且拼接url参数,name传值为中文时被encode转译,且最终接取数据之前未被decode转译回,问题探索: feign: @FeignClient(name = "service-test") public interface TestServiceApi {
-
feign 调用第三方服务中部分特殊符号未转义问题
目录 调用第三方部分特殊符号未转义 1.问题发现过程 2.解决办法 3.疑问 @RequestParams&符号未转义 feign-core版本 源码分析 测试 解决方案 调用第三方部分特殊符号未转义 开发过程中,发现+(加号)这个符号没有转义,导致再调用服务的时候把加号转义成空格了.导致后台获取到的数据会不正确. 1. 问题发现过程 feign 解析参数的时候,使用的标准是 RFC 3986,这个标准的加号是不需要被转义的.其具体的实现是 feign.template.UriUtils#enc
-
Spring-cloud-eureka使用feign调用服务接口
Spring-cloud-eureka使用feign调用服务接口的具体方法,供大家参考,具体内容如下 基于spring-boot 2.0以上版本完成的微服务架构 pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE<
-
详解Spring-Cloud2.0之Feign调用远程服务指南
Feign是什么 Feign是简化Java HTTP客户端开发的工具(java-to-httpclient-binder),它的灵感来自于Retrofit.JAXRS-2.0和WebSocket.Feign的初衷是降低统一绑定Denominator到HTTP API的复杂度,不区分是否为restful. 为什么使用Feign 开发人员使用Jersey和CXF等工具可以方便地编写java client,从而提供REST或SOAP服务:开发人员也可以基于Apache HC等http传输工具包编写自己
随机推荐
- prototype Element学习笔记(篇二)
- javascript中闭包概念与用法深入理解
- 关于phpwind克隆用户的方法
- spring中的FactoryBean代码示例
- python使用cStringIO实现临时内存文件访问的方法
- go语言实现猜数字小游戏的方法
- response.end的优缺点介绍
- Android 动画之AlphaAnimation应用详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 搭建简单的nodejs http服务器详解
- php生成随机密码的几种方法
- SQL 合并多行记录的相同字段值
- informatical lookup的使用详解
- Android侧滑效果简单实现代码
- 一个JQuery写的点击上下滚动的小例子
- 动网升级疑难集合(1)
- chrome原生方法之数组
- IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
- java计算给定字符串中出现次数最多的字母和该字母出现次数的方法
- 实现div滚动条默认最底部以及默认最右边的示例代码