RequestLine与Feign客户端

2023/05/13

1. 概述

在本教程中,我们将演示如何在Feign客户端中使用@RequestLine注解。@RequestLine是一个模板,用于定义用于连接 RESTful Web 服务的 URI 和查询参数。

2.Maven依赖

首先,让我们创建一个Spring Boot Web 项目,并将spring-cloud-starter-openfeign或feign -core依赖项包含到我们的pom.xml文件中。spring-cloud-starter-openfeign包含feign -core依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>3.1.2</version>
</dependency>

或者

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-core</artifactId>
    <version>11.8</version>
</dependency>

3. Feign Client中的@RequestLine

@RequestLine Feign 注解将HTTP 谓词、路径和请求参数指定为 Feign 客户端中的参数。路径和请求参数使用@Param注解指定。

通常在Spring Boot应用程序中,我们会使用@FeignClient,但如果我们不想使用spring-cloud-starter-openfeign依赖项,我们也可以使用@RequestLine。如果我们将@RequestLine与@FeignClient一起使用,则使用该依赖项会给我们一个IllegalStateException。

@FeignClient注解的字符串值是一个任意名称,用于创建 Spring Cloud LoadBalancer 客户端。我们可能会根据需要额外指定 URL 和其他参数。

让我们创建一个使用@RequestLine的接口:

public interface EmployeeClient {
    @RequestLine("GET /empployee/{id}?active={isActive}")
    @Headers("Content-Type: application/json")
    Employee getEmployee(@Param long id, @Param boolean isActive);
}

我们还应该在定义其余API所需的标头的地方提供@Headers。

现在,我们将调用这样创建的接口来调用实际的API:

EmployeeClient employeeResource = Feign.builder().encoder(new SpringFormEncoder())
  .target(EmployeeClient.class, "http://localhost:8081");
Employee employee = employeeResource.getEmployee(id, true);

4. 总结

在本文中,我们演示了如何以及何时在Feign Client 中使用 @RequestLine 注解。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章