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 .