知識庫 / HTTP Client-Side RSS 訂閱

REST 確界:頭部、Cookie 和參數

HTTP Client-Side,REST,Testing
HongKong
6
03:53 AM · Dec 06 ,2025

1. 概述

在本快速教程中,我們將探討一些高級的 REST-assured 場景。 在教程《REST-assured 指南》中,我們之前已經探討過 REST-assured。

為了繼續,我們將涵蓋一些示例,展示如何為我們的請求設置標頭、Cookie 和參數。

設置方式與上一篇文章相同,讓我們直接進入我們的示例。

2. 設置參數

現在,我們來討論如何為我們的請求指定不同的參數,首先是路徑參數。

2.1. 路徑參數

我們可以使用 <em >pathParam(parameter-name, value)</em > 來指定路徑參數:

@Test
public void whenUsePathParam_thenOK() {
    given().pathParam("user", "eugenp")
      .when().get("/users/{user}/repos")
      .then().statusCode(200);
}

為了添加多個路徑參數,我們將使用 pathParams()方法:

@Test
public void whenUseMultiplePathParam_thenOK() {
    given().pathParams("owner", "eugenp", "repo", "tutorials")
      .when().get("/repos/{owner}/{repo}")
      .then().statusCode(200);

    given().pathParams("owner", "eugenp")
      .when().get("/repos/{owner}/{repo}","tutorials")
      .then().statusCode(200);
}

在此示例中,我們使用了命名路徑參數,但也可以添加未命名參數,甚至將兩者結合使用:

given().pathParams("owner", "eugenp")
  .when().get("/repos/{owner}/{repo}", "tutorials")
  .then().statusCode(200);

最終的URL,在此例中是 https://api.github.com/repos/eugenp/tutorials.

請注意,未命名的參數是基於索引的。

2.2. 查詢參數

接下來,讓我們看看如何使用 queryParam() 函數指定查詢參數。

@Test
public void whenUseQueryParam_thenOK() {
    given().queryParam("q", "john").when().get("/search/users")
      .then().statusCode(200);

    given().param("q", "john").when().get("/search/users")
      .then().statusCode(200);
}

param() 方法將類似於 queryParam() 在 GET 請求中的用法。

要添加多個查詢參數,我們可以通過鏈接多個 queryParam() 方法,或將參數添加到 queryParams() 方法中:

@Test
public void whenUseMultipleQueryParam_thenOK() {
 
    int perPage = 20;
    given().queryParam("q", "john").queryParam("per_page",perPage)
      .when().get("/search/users")
      .then().body("items.size()", is(perPage));   
     
    given().queryParams("q", "john","per_page",perPage)
      .when().get("/search/users")
      .then().body("items.size()", is(perPage));
}

2.3. 表單參數

最後,我們可以使用 <em >formParam():</em > 函數來指定表單參數。

@Test
public void whenUseFormParam_thenSuccess() {
 
    given().formParams("username", "john","password","1234").post("/");

    given().params("username", "john","password","1234").post("/");
}

The param() 方法將在 POST 請求中充當 formParam() 的作用。

此外,formParam() 會添加一個 Content-Type 頭部,其值為 “application/x-www-form-urlencoded“。

3. 設置請求頭

接下來,我們可以使用 <em >header()</em> 函數自定義請求頭。

@Test
public void whenUseCustomHeader_thenOK() {
 
    given().header("User-Agent", "MyAppName").when().get("/users/eugenp")
      .then().statusCode(200);
}

在此示例中,我們使用 header() 函數設置了 User-Agent 請求頭。

我們還可以使用相同的函數添加具有多個值的請求頭:

@Test
public void whenUseMultipleHeaderValues_thenOK() {
 
    given().header("My-Header", "val1", "val2")
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

在此示例中,我們將有一個包含兩個頭信息的請求:My-Header:val1My-Header:val2

為了添加多個頭信息,我們將使用 headers() 方法:

@Test
public void whenUseMultipleHeaders_thenOK() {
 
    given().headers("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

4. 添加 Cookie

我們可以使用 cookie() 函數為我們的請求指定自定義 Cookie:

@Test
public void whenUseCookie_thenOK() {
 
    given().cookie("session_id", "1234").when().get("/users/eugenp")
      .then().statusCode(200);
}

我們還可以使用 cookie Builder 自定義我們的 cookie。

@Test
public void whenUseCookieBuilder_thenOK() {
    Cookie myCookie = new Cookie.Builder("session_id", "1234")
      .setSecured(true)
      .setComment("session id cookie")
      .build();

    given().cookie(myCookie)
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

結論

在本文中,我們展示瞭如何使用 REST-assured 時指定請求參數、標頭和 Cookie 的方法。

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

發佈 評論

Some HTML is okay.