[Request processing failed; nested exception is feign.FeignException$MethodN

在学习SpringCloud过程中,使用OpenFeign发送请求时,OrderClient.java有以下代码

@FeignClient(value = "trade-service")
public interface OrderClient {

    @GetMapping("/orders/updateById")
    public void updateOrderById(@RequestBody Order order);
}

在PayserviceImpl中调用 orderClient.updateOrderById(order) 时,报错

[405] during [GET] to [http://trade-service/orders/updateById] [OrderClient#updateOrderById(Order)]: [{“timestamp”:“2024-03-24T13:06:37.962+00:00”,“status”:405,“error”:“Method Not Allowed”,“path”:“/orders/updateById”}]

大致意思是在调用orderClient的get请求时,OpenFeign不允许该方法调用。

我不能理解为什么不能调用该方法,直到想起来 @RequestBody 接收的是json,map等数据格式

而get请求发送的参数是在url后边的,没有json格式,只能通过@RequestParam(“xxx”)来获取get请求数据

然后我把@GetMapping改为@PostMapping之后,就不报错了

解决方案

将OrderClient、TradeController中,请求参数使用@RequestBody接受的方法,将请求方式注解改为@PostMapping,就不会爆以上错误

原因: @RequestBody 接收的是json,map等数据格式,而@PostMapping才会发送json等数据格式,@GetMapping不行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值