feign GET请求不支持对象传参的坑及解决

目录
  • GET请求不支持对象传参
    • 问题
    • 解决方法
  • feign发get请求遇到的坑
    • 问题
    • 原因分析
    • 加上@RequestParam后问题解决

GET请求不支持对象传参

问题

@GetMapping("/getByParam")
String hello(Student student) throws Exception;

如上,feign调用报错500。

解决方法

增加@SpringQueryMap

@GetMapping("/getByParam")
String hello(@SpringQueryMap Student student) throws Exception;

feign发get请求遇到的坑

问题

@RequestMapping(value="/test",method = RquestMethod.GET)
Result getA(String id);

如上,调用该方法报错请求方式post错误,请用get。

原因分析

feign将该get方法转为了post,导致出错。

这个问题的主要的原因就是Feign默认使用的连接工具实现类,发现只要你有对应的body体对象,就会强制把GET请求转换成POST请求。

Feign源码在解析含有@FeignClient注解的接口的时候,在创建代理对象的时候,代理对象在去解析含有@RequestParam注解的参数的时候,会将该参数增强到url上,而不是作为body传递。

加上@RequestParam后问题解决

修改后代码如下。

@RequestMapping(value="/test",method = RquestMethod.GET)
Result getA(@RequestParam String id);

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

(0)

相关推荐

  • 详解spring cloud feign踩坑记录

    1:多客户端时,feign接口抽取到公共jar中,此时,客户端的启动类上需要对该jar中feign所在的包进行扫描,要在spring和feign中同时注册,否则启动时会报:"Consider defining a bean of type '******Feign' in your configuration." @SpringBootApplication @EnableTransactionManagement @EnableDiscoveryClient @ComponentSc

  • SpringCloud中的Feign远程调用接口传参失败问题

    目录 Feign远程调用接口传参失败 这是调用者 这是feign的client 这是被调者 Feign远程调用的注意点 定义的做远程调用的api接口 service微服务中的Controller的参数绑定 Feign远程调用接口传参失败 我在做一个微服务调用的时候出现了被调接口传参失败问题 Feign是通过http协议调用服务的,后来发现是因为Gep和Maping不一致,还有使用feign时要记得给实体类加无参构造注解 同时这些注解都尽量一致,不然微服务调bug很麻烦. 这是调用者 这是feig

  • 解决SpringCloud Feign传对象参数调用失败的问题

    SpringCloud Feign传对象参数调用失败 不支持GET请求方式 使用Apache HttpClient替换Feign原生httpclient @RequestBody接收json参数 bootstrap-local.yml feign: httpclient: enabled: true pom.xml <!-- 使用Apache HttpClient替换Feign原生httpclient --> <dependency> <groupId>com.netf

  • feign GET请求不支持对象传参的坑及解决

    目录 GET请求不支持对象传参 问题 解决方法 feign发get请求遇到的坑 问题 原因分析 加上@RequestParam后问题解决 GET请求不支持对象传参 问题 @GetMapping("/getByParam") String hello(Student student) throws Exception; 如上,feign调用报错500. 解决方法 增加@SpringQueryMap @GetMapping("/getByParam") String h

  • SpringCloud:feign对象传参和普通传参及遇到的坑解决

    目录 feign对象传参和普通传参及遇到的坑 对象传参 普通传参 遇到的坑-1 遇到的坑-2 feign传递复杂参数对象需要注意的地方 传递复杂参数对象需要用Post 在传递的过程中 feign对象传参和普通传参及遇到的坑 对象传参 使用@RequestBody来指定传参对象 @RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)     ResultResponse<Strin

  • Vue + Axios 请求接口方法与传参方式详解

    目录 一.Get请求: 二.Post请求: 三.拓展补充 使用Vue的脚手架搭建的前端项目,通常都使用Axios封装的接口请求,项目中引入的方式不做多介绍,本文主要介绍接口调用与不同形式的传参方法. 一.Get请求: Get请求比较简单,通常就是将参数拼接到url中 用? &连接或者用下面这种方式: this.axios.get(this.getWxQyUserInfoUrl, { params: { agentid: this.doLoginParams.agentid, code: this

  • vue中使用$http.post请求传参的错误及解决

    目录 使用$http.post请求传参的错误 vue post请求之坑 解决方法 使用$http.post请求传参的错误 在使用$http请求后台,照常我们在后端 使用注解@PostMapper或者 @RequestMapping(value = “XXXX”,method = RequestMethod.POST)接受请求 handleAdd(node) { this.$http.post("/item/category/addCategory",{ node:node }) .th

  • mybatis group by substr函数传参报错的解决

    目录 mybatis group by substr传参报错 报异常 原因 使用group by 分组查询返回为null 解决方法 mybatis group by substr传参报错 报异常 ### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式 SELECT     SUBSTR( region_code, 1,#{ queryMap.groupCodeLength, jdbcType = INTEGE

  • Vue关于对象直接赋值的坑及解决

    目录 Vue对象直接赋值的坑 Vue对象的赋值Object.assign({}, row) Vue对象直接赋值的坑 受JavaScript的限制,Vue不能监听到对象属性的添加或删除.如果这样做了,你会发现添加或删除的属性不是响应式的,即无法及时更新视图. 如果我们需要将a对象赋值给b对象时,要么把b对象的所有属性都在a对象中定义一下,要么 使用this.$set(this.object,key,value)将b对象中有a对象中没有的属性set进去,或者使用Object.assign(this.

  • javascript写的异步加载js文件函数(支持数组传参)

    自己用的加载js文件,支持多文件,不兼容ie 复制代码 代码如下: /** * 加载js文件 * @param  {string || array}   url   js路径 * @param  {Function} fn      加载完成后回调 * @return {object}           game对象 * @example * getScript("url.js",fn) * getScript(["url-1.js","url-2.js

  • 详解SpringMVC——接收请求参数和页面传参

    spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(HttpServletRequest request){ String name = request.getParameter("name") String pass = request.getParameter("pass") } 2,Spring会自动将表单参数注入到方

  • Feign调用中的两种Header传参方式小结

    目录 Feign调用中的两种Header传参方式 在请求拦截器中统一配置 通过@RequestHeader注解 调用feign接口时,如何往header中添加参数 总结 Feign调用中的两种Header传参方式 在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端. 我们可以使用JDK原生的URLConnection.Apache的Http Client.Netty的异步HTTP Client, Spri

  • 基于feign传参MultipartFile问题解决

    目录 feign传参MultipartFile问题 首先引入依赖 新建feign的配置 在feign接口中配置 Feign传输MultipartFile的一些问题 File转MultipartFile feign传参MultipartFile问题 首先,feign服务之间的调用,传参默认的格式为:ContentType=application/x-www-form-urlencoded 以表单的形式传参的,而文件流的传参,需要form-data的ContentType,否则会报错的 首先引入依赖

随机推荐