Перейти к содержанию

RequestLine с Feign Client

В этом руководстве покажем, как использовать аннотацию @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.

Оригинал