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

在这里插入图片描述

第一种报错:405,method not allowed

问题描述

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

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

把这个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"}]

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

报错解决

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

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

查询成功

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

路径参数解决

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

第二种报错: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)

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

报错解决

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);
}

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

总结

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

你可能感兴趣的:(Program,bug,bug,java,开发语言)