关于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注解,注意这个注解最多只能有一个,不能传多个并且这个参数得放到最后面

消费者

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈@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传输工具包编写自己

随机推荐