避坑 | 调用feign远程get请求的接口却提示“Request method ‘POST‘ not supported”

前言

昨天做项目时,和前端同事联调接口,前端同事说xx功能的接口报错了,让我看看啥情况…在这里插入图片描述

避坑

修改前后的feign接口对比:

(修改前)

/**
 * 获取用户列表
 * @param user 用户信息
 * @return 列表
 */
@GetMapping("/user/list")
R<TableDataInfo> selectUserList(SysUser user);

报错:get请求调用feign接口提示“Request method ‘POST’ not supported”(请求方法POST不被支持)。

(修改后)

/**
 * 获取用户列表
 * @param user 用户信息
 * @return 列表
 */
@GetMapping("/user/list")
R<TableDataInfo> selectUserList(@RequestParam("user") SysUser user);

加上 @RequestParam(“user”) 后问题解决。

使用feign远程调用第一次遇到这个问题,网上找了半天也没找出原因。有的博友说,如果它提示get请求的方法不支持‘POST’请求,那么就加上 @RequestParam 注解使该方法强制调用get请求;那么如果出现post请求的方法不支持‘GET’请求这种报错,则加上 @RequestBody 注解使该方法强制调用post请求。

说明

(原文链接:https://blog.csdn.net/qfikh/article/details/88553603)

Get方式参数获取

get请求方式参数是拼接在url后,限制了可以发送的长度。Get不支持使用http Body获取参数,他只支持params,也就是URL拼接参数。如: http://127.0.01:8080/user?name=zhangsan

Post方式参数获取

post传递的参数可以大致分成两种,一种是表单:在sevlet实现中mutipart/form-data和application/x-www-form-urlencoded会被特殊处理,请求参数将被放置于request.paramter,解析成map。第二种,已application/json,参数是存放在json中的,参数必须要用@RequestBody才能解析出来。

@RequestBody是将post请求中内容转为一个整体对象。@RequestBody的解析有两个条件:
1、POST请求中content的值必须为json格式(存储形式可以是字符串,也可以是byte数组);
2、@RequestBody注解的参数类型必须是完全可以接收参数值的类型,比如:Map,JSONObject,或者对应的JavaBean。
Integer类型不能作为@RequestBody注解的参数类型。

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚不写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值