知識庫 / REST RSS 訂閱

Feign 客户端請求處理

REST
HongKong
9
03:40 AM · Dec 06 ,2025

1. 概述

本教程將演示如何在 Feign 客户端中使用 <a href="https://github.com/OpenFeign/feign/blob/master/core/src/main/java/feign/RequestLine.java"><em @RequestLine</em></a> 註解。@RequestLine` 註解用於定義與 RESTful Web 服務連接時的 URI 和查詢參數模板。

2. Maven 依賴

首先,我們創建一個 Spring Boot Web 項目,並將 spring-cloud-starter-openfeignfeign-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>13.1</version>
</dependency>

3. Feign 客户端

@RequestLine Feign 註解指定 HTTP 動詞、路徑和請求參數作為 Feign 客户端的參數。路徑和請求參數使用@Param註解進行指定。

通常在 Spring Boot 應用程序中,我們會使用@FeignClient,但如果不想使用spring-cloud-starter-openfeign依賴,也可以使用@RequestLine

使用該依賴將導致我們使用@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,其中定義了所需的 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 註解的方法和時機。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.