1. 概述
在这个教程中,我们将展示如何在Feign客户端中使用@RequestLine
注解。@RequestLine
是定义与RESTful Web服务连接的URI和查询参数的模板。
2. Maven依赖
首先,我们创建一个Spring Boot web项目,并在pom.xml
文件中添加spring-cloud-starter-openfeign
或feign-core
依赖。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. @RequestLine
在Feign客户端
@RequestLine
Feign注解作为参数在Feign客户端中指定HTTP动词、路径和请求参数。路径和请求参数使用@Param
注解进行指定。
在Spring Boot应用中,通常我们会使用@FeignClient
,但如果我们不想使用spring-cloud-starter-openfeign
依赖,也可以使用@RequestLine
。使用这个依赖时,如果同时使用@RequestLine
和@FeignClient
,会抛出IllegalStateException
。
@FeignClient
注解的String
值是一个任意名称,用于创建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);
}
同时,我们也应该提供@Headers
,定义REST API所需的头信息。
接下来,我们将调用创建的接口来调用实际的API:
EmployeeClient employeeResource = Feign.builder().encoder(new SpringFormEncoder())
.target(EmployeeClient.class, "http://localhost:8081");
Employee employee = employeeResource.getEmployee(id, true);
4. 总结
在这篇文章中,我们展示了何时以及如何在Feign客户端中使用@RequestLine
注解。
如惯例,本教程的所有代码示例可在GitHub上找到。