HCRM博客

为什么FeignClient在调用时报错?

FeignClient报错问题在Spring Boot和Spring Cloud应用中是常见的,特别是在微服务架构中,以下是一些常见原因及其解决方案:

常见错误及解决方法

为什么FeignClient在调用时报错?-图1
(图片来源网络,侵权删除)
错误类型描述可能原因解决方案
版本不兼容错误 由于Spring Boot、OpenFeign等组件版本不匹配导致的错误。 不同版本的依赖可能导致冲突。 确保所有相关依赖的版本兼容,如果使用Spring Cloud Hoxton.SR12或更高版本,需要添加springcloudstarterloadbalancer依赖。
404 Not Found 请求的资源未找到。 1. 服务提供方的接口路径与调用方不一致,2. 服务未正确注册到Eureka或其他注册中心。 1. 检查服务提供方和调用方的接口路径是否一致,2. 确保服务已正确注册到注册中心,3. 检查是否有正确的负载均衡策略。
415 Unsupported Media Type 请求的内容型不被支持。 请求和响应的内容类型不匹配。 确保请求和响应的ContentType一致,例如都设置为"application/json;charset=UTF8"。
BeanCreationException 在创建FeignClient Bean时出错。 1. FeignClient接口缺少name属性,2. 启动类上未添加@EnaBLeFeignClients注解。 1. 为FeignClient设置name属性,2. 在启动类上添加@EnableFeignClients注解。
IllegalStateException: RequestParam.value() was empty on parameter 0 请求参数为空。 方法参数未正确注解。 在FeignClient的方法参数上添加@RequestParam注解,并指定参数名。

示例代码

pom.xml依赖配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>springbootstarterweb</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>springcloudstarteropenfeign</artifactId>
    <version>3.1.3</version>
</dependency>

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableFeignClients
@SpringBootApplication
public class ClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class, args);
    }
}

FeignClient接口定义

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "userService", url = "http://localhost:8081/api/server")
public interface UserFeignClient {
    @GetMapping("/getUserInfo")
    String getUserInfo(@RequestParam("id") String id);
}

FAQs

1、Q: 为什么FeignClient会报404错误?

为什么FeignClient在调用时报错?-图2
(图片来源网络,侵权删除)

A: 404错误通常是因为服务提供方的接口路径与调用方不一致,或者服务未正确注册到Eureka或其他注册中心,解决方法是检查接口路径和服务注册情况。

2、Q: FeignClient中的方法参数如何正确传递?

A: FeignClient中的方法参数需要使用@RequestParam注解,并指定参数名。@RequestMapping(value = "/blackAndWhiteList", method = RequestMethod.POST) List<TaskVO> getAll(@RequestParam("name") String name);

为什么FeignClient在调用时报错?-图3
(图片来源网络,侵权删除)

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/gz/5551.html

分享:
扫描分享到社交APP
上一篇
下一篇