bug记录(feign)——如果采用feign远程调用服务,则需要加请求参数相关注解 @PathVariable、@RequestParam、@RequestBody

在这里插入图片描述

第一种报错:405,method not allowed

问题描述

生产者有一个api,根据电影类型进行模糊查询,采用get方法,需要传一个参数name

在这里插入图片描述

把这个api用feign在别的模块进行调用时,报了如下错误,405异常

405,“error”:“Method Not Allowed”,“path”:“/api/genre/findByName”

feign.FeignException$MethodNotAllowed: [405] during [GET] to [http://movie-genre/api/genre/findByName] [IGenreFeign#findGenreByName(String)]: [{"timestamp":"2023-09-07T14:33:22.777+00:00","status":405,"error":"Method Not Allowed","path":"/api/genre/findByName"}]

在这里插入图片描述

报错解决

需要再feign里面加一下请求的参数的注解

在这里插入图片描述

查询成功

在这里插入图片描述

路径参数解决

在这里插入图片描述

第二种报错:Method has too many Body parameters

问题描述

在一个微服务中,通过feign调用了另一个微服务,需要传两个参数,引入feign之后,报错,报错显示方法参数太多

Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract boolean com.tianju.rabbit.feign.OrderFeign.add2(java.lang.String,java.lang.Integer)

在这里插入图片描述

报错解决

package com.tianju.rabbit.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "order-service")
public interface OrderFeign {

    @PostMapping("/add")
    boolean add(@RequestParam("commodityCode") String commodityCode,
                @RequestParam("nums") Integer nums);
}

在这里插入图片描述

总结

在使用feign进行微服务之间远程调用的时候,需要加入相关的注解,@PathVariable:和路径变量传参进行绑定;@RequestParam:和传的参数进行绑定;@RequestBody:如果前端传的JSON对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arya's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值