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
即可立即永久解锁本站全部文章