В этом руководстве покажем, как использовать аннотацию @RequestLine в Feign Client. @RequestLine – это шаблон для определения URI и параметра запроса для подключения к веб-службе RESTful.
Зависимость от Maven
Для начала создадим веб-проект Spring Boot и включим зависимость 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>
@RequestLine в Feign Client
Аннотация @RequestLine Feign указывает глагол HTTP, путь и параметры запроса в качестве аргументов в Feign Client. Путь и параметры запроса указываются с помощью аннотации @Param.
Обычно в приложении Spring Boot используют @FeignClient, но можно использовать @RequestLine, если не хотим использовать зависимость spring-cloud-starter-openfeign. Использование этой зависимости выбросит исключение IllegalStateException, если используем @RequestLine с @FeignClient.
Строковое значение аннотации @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);
}
Необходимо добавить @Headers, где определяем заголовки, необходимые для остальных API.
Теперь будем вызывать созданный таким образом интерфейс для вызова фактического API:
EmployeeClient employeeResource = Feign.builder().encoder(new SpringFormEncoder())
.target(EmployeeClient.class, "http://localhost:8081");
Employee employee = employeeResource.getEmployee(id, true);
Заключение
В этой статье рассмотрели, как и когда аннотация @RequestLine используется в Feign Client.
Все примеры кода, используемые в этом руководстве, доступны на GitHub.