Перейти к основному содержимому

RequestLine с клиентом Feign

· 2 мин. чтения

1. Обзор

В этом руководстве мы покажем, как использовать аннотацию @RequestLine в клиенте Feign . @RequestLine — это шаблон для определения URI и параметра запроса для подключения к веб-службе RESTful.

2. Зависимость от 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>

3. @RequestLine в Feign Client

Аннотация @RequestLine Feign указывает глагол HTTP, путь и параметры запроса в качестве аргументов в клиенте Feign. Путь и параметры запроса указываются с помощью аннотации @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);

4. Вывод

В этой статье мы показали, как и когда аннотация @RequestLine используется в Feign Client.

Как обычно, все примеры кода, используемые в этом руководстве, доступны на GitHub .