动态

详情 返回 返回

詳解:REST API 中常見的 HTTP 請求參數 - 动态 详情

HTTP 請求中的請求參數解釋

當客户端發起 HTTP 請求 時,它們可以在 URL 末尾添加請求參數(也叫查詢參數或 URL 參數)來傳遞數據。這些參數以鍵值對的形式出現在 URL 中,方便瀏覽和操作。

請求參數示例

以下是一些帶有請求參數的 URL 示例:

    /users?id=1234
    /posts?category=tech&sort=asc
    /search?q=hello+world

這些參數出現在 ? 之後,並使用 & 分隔,每個參數都能夠被服務器讀取以便處理請求。

為什麼需要請求參數?

請求參數作為 REST API 的一部分,具備多項優勢:

  • 簡單易用:通過 URL 附加鍵值對,是傳遞數據的一種簡便手段,減少了複雜請求體的需求。
  • 靈活性高:你可以根據需要組合不同的參數,輕鬆引入新參數而不會影響現有的客户端。
  • 緩存優勢:不同參數對應的 URL 可以分別被瀏覽器和內容分發網絡(CDNs)緩存。
  • 書籤化:包含參數的 URL 可以輕鬆創建書籤保存。
  • 日誌記錄:參數值在服務器日誌中直接可見,便於跟蹤和分析。
  • 編碼支持:URL 支持對參數值進行編碼,例如將空格編碼為 %20
    綜合來看,請求參數為 REST API 提供了一種高效傳遞數據的方式。

    四種主要的 API 參數類型

    請求參數主要有四種類型:

    查詢參數 (Query Parameters)

    這是最常見的參數類型,附加在 URL 路徑的 ? 之後:

    /users?page=1&per_page=20

    查詢參數適用於過濾、排序、分頁和簡單查詢。

    路徑參數 (Path Parameters)

    這些參數通常嵌入在 URL 路徑中:

    /users/{userId}

    這種方式能夠讓標識符和固定屬性直接出現在資源路徑上,增加 API 的自描述性。

    HTTP 請求頭參數 (Header Parameters)

    頭部參數提供了關於請求的元數據,比如內容類型、認證信息等。這些參數位於 HTTP 請求頭中,與請求體分離。
    示例:

    Content-Type: application/json
    Authorization: Bearer <token>

    請求體參數 (Body Parameters)

    這些參數包含請求體中的數據,通常用於 POST、PUT 和 PATCH 請求來傳輸如 JSON 對象或表單數據的實際內容。
    示例:

    {
      "username": "example",
      "password": "password123"
    }

    使用 HTTP 方法的請求參數

    GET 請求的參數

    GET 請求通常使用查詢參數,適用於過濾結果、分頁和排序。查詢參數的例子:

    GET /users?status=active&sort=-createdAt

    POST 請求的參數

    雖然 POST 請求可以包含查詢參數,但一般避免這麼做。應該使用路徑參數來識別資源,並將其他數據放入請求體中:

    POST /users/{userId}/comments
    {
      "text": "Hello World!"
    }

    PUT 請求的參數

    與 POST 類似,PUT 請求應使用路徑參數來識別資源,並將需要更新的數據放在請求體中:

    PUT /users/{userId}
    {
      "firstName": "Jane"
    }

    PATCH 請求的參數

    PATCH 請求用於部分更新已有資源,僅發送需要修改的數據,優化網絡流量。
    示例:

    PATCH /api/users/123
    {
      "age": 40,
      "city": "New York"
    }

    API 工具中使用請求參數

    Apifox  是一個 API 文檔工具,能根據請求參數等信息生成詳盡的 API 文檔。

    請求參數文檔

    在 Apifox 中,可以記錄請求參數的名稱、類型、描述及驗證規則,確保使用 API 的開發人員清楚每個請求的預期數據。

GsRxyJMIdq.jpg

代碼中訪問參數

在服務器端,可以從請求中提取和驗證參數再使用。在 Express 中,參數儲存在 req.params 和 req.query 對象中。
示例:

    app.get('/users', (req, res) => {
      const sort = req.query.sort;
      const limit = req.query.limit;
      
      // ...
    });

客户端可以使用類似 qs 的庫來生成和解析參數字符串。

參數驗證

驗證請求參數是避免安全問題和數據錯誤的重要步驟:

  • 類型檢查:確保參數類型正確(如數字、字符串)。
  • 值檢查:驗證值的合法性(如範圍、模式)。
  • 必要性:確保關鍵參數存在。
  • 清理:防止 XSS 和其他注入攻擊。
    如 Express Validator 等庫能使參數驗證更為簡便。

    總結

    請求參數使得數據傳輸更加簡便、靈活,並且符合 REST 原則。
    在使用請求參數時,最佳實踐包括:

  • 對於 GET 請求使用查詢參數,對於其他方法使用路徑參數。
  • 避免在請求體中使用查詢參數,應該將數據放在請求體內。
  • 同時驗證、清理和記錄參數。
  • 在 API 之間保持參數的一致性。

通過這些策略,可以構建出高效、安全的 API 系統。

user avatar aitaokedemugua 头像 jingdongkeji 头像 qingzhan 头像 xiaoxxuejishu 头像 guixiangyyds 头像 huangmingji 头像 Asp1rant 头像 johanazhu 头像 wnhyang 头像 xiaohe0601 头像 cbuc 头像 snowwolfarden 头像
点赞 55 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.