使用 Feign REST 客户端进行服务调用2025 年 1 月 8 日 | 3 分钟阅读 在本节中,我们将从一个流行的 Spring Cloud 组件开始,即 Feign。 FeignFeign 是由 Netflix 开发的声明式 Web 服务(HTTP 客户端)。它的目标是简化 HTTP API 客户端。它是一个 Java 到 HTTP 客户端的绑定器。如果想要使用 Feign,创建一个接口并添加注解即可。它提供了可插拔的注解支持,包括 Feign 注解和 JAX-RS 注解。 它是一个用于创建 REST API 客户端的库。它使 Web 服务客户端更容易使用。开发人员可以使用声明式注解来调用 REST 服务,而不是编写具有代表性的样板代码。 Spring Cloud OpenFeignSpring Cloud OpenFeign 通过自动配置和绑定到 Spring 环境,为 Spring Boot 应用程序提供 OpenFeign 集成。如果没有 Feign,在 Spring Boot 应用程序中,我们会使用 RestTemplate 来调用用户服务。要使用 Feign,我们需要在 pom.xml 文件中添加 spring-cloud-starter-openfeign 依赖项。 让我们使用 Spring Cloud OpenFeign 简化先前开发的代码。 在上一节中,我们已经遇到的一件事是,在开发 currency-conversion-service 时,调用 REST 服务是多么困难。我们需要进行大量的手动操作才能调用一个非常简单的服务。但我们仍然为此编写了大量的代码。 当我们使用微服务时,会有很多对其他服务的调用。我们不需要像以前那样编码。Feign 是解决此问题的组件。 Feign 使调用其他微服务变得容易。 Feign 提供的另一个附加功能是:它与 Ribbon(客户端负载均衡框架)集成。 让我们在我们的项目中实现 Feign,并使用 Feign 调用其他微服务。 步骤 1: 选择 currency-conversion-service 项目。 步骤 2: 打开 pom.xml 并添加 Feign 依赖项。 Feign 继承自 Netflix。 步骤 3: 添加依赖项后,通过在 CurrencyConversionServiceApplication.java 文件中添加注解 @EnableFeignClients 来 启用 Feign 扫描客户端。 步骤 4: 在 @EnableFeignClients 注解中定义一个属性。该属性是我们想要扫描的包的名称。 CurrencyConversionServiceApplication.java 我们已经在项目中启用了 Feign。 现在,我们将使用 Feign 来调用该服务。 步骤 5: 创建一个 Feign 代理,使我们能够与外部微服务通信。 让我们创建一个名为 CurrencyExchangeServiceProxy 的接口。 步骤 6: 添加一个注解 @FeignClient。传递属性 name 和 URL。 在 name 属性中,写入我们要使用的服务的名称。 在我们的例子中,我们将使用 currency-exchange-service。 在 URL 属性中,写入 currency-exchange-service 运行的端口。 步骤 7: 现在,我们需要定义一个与 currency-exchange-controller 通信的方法。 打开 Currency-ConverterController.java 文件。 复制 currency-converter 映射并将其粘贴到同一文件中。 步骤 8: 将映射名称更改为 /currency-converter-feign/from/{from}/to/{to}/quantity/{quantity},并将方法名称更改为 convertCurrencyFeign。 步骤 9: 使用 CurrencyExchangeServiceProxy 并自动装配它。 步骤 10: 首先,通过调用 URL https://:8000/currency-exchange/from/USD/to/INR 运行 currency-exchange-service,然后在运行URL https://:8100/currency-converter/from/USD/to/INR/quantity/1000 来运行 currency-conversion-service。 如果我们不按顺序运行服务,currency-conversion-service 会显示 Whitelabel Error Page。 这是因为 currency-conversion-service 使用 currency-exchange-service 的 conversionMultiple。 步骤 11: 通过使用 URL https://:8100/currency-converter-feign/from/USD/to/INR/quantity/1000 来执行 feign 服务。它返回与 currency-converter-service 相同的响应。 ![]() 在上面的 URL 中将货币 USD 更改为 EUR,然后再次调用相同的 URL。 它从 currency-exchange-service 中获取变量 "from" 并返回 totalCalculated Amount。 ![]() 我们发送的请求使用 Feign。 Feign 是一个 REST 服务客户端。 Feign 可以轻松地调用 RESTful Web 服务。 当我们使用 RestTemplate 调用 RESTful 服务时,它会创建与 RESTful 服务通信的 重复 代码。 当我们定义 Feign 时,我们只需要定义一个代理并在其中定义一个方法。 Feign 帮助我们简化客户端代码以与 RESTful Web 服务通信。 考虑一个 currency-exchange-service 提供十五种不同服务的场景。 与这些服务相关的所有详细信息都必须在一个地方定义,即 CurrencyExchangeServiceProxy 接口。 下一个主题使用 Ribbon 进行客户端负载均衡 |
我们请求您订阅我们的新闻通讯以获取最新更新。