requests --- HTTP 用戶端

requests 模組提供一個精簡的 HTTP/HTTPS 用戶端 API,類似於 Python requests 函式庫。每個請求函式都會回傳一個 requests.Response 物件。

範例::

import requests

# GET a JSON resource.
r = requests.get("https://httpbin.org/get")
print(r.status_code, r.reason)
print(r.json())

# POST JSON.
r = requests.post(
    "https://httpbin.org/post",
    json={"id": 1, "value": 42},
    headers={"X-Source": "openmv"},
)
print(r.json())

Response 類別

class requests.Response(code: int, reason: str, headers: bytes = None, content: bytes = None)

代表一個 HTTP 回應。實例由 requests.request 與各方法的輔助函式回傳。

status_code: int

伺服器回傳的整數 HTTP 狀態碼。

reason: str

伺服器回傳的原因片語(解碼後的 str)。

encoding: str

用於解碼 requests.Response.headersrequests.Response.content 的字串編碼。預設為 "utf-8"

headers: str

requests.Response.encoding 解碼並以 str 形式回傳的回應標頭。

content: str

requests.Response.encoding 解碼並以 str 形式回傳的回應主體。

json() dict

requests.Response.content 解析為 JSON 並回傳所得的物件。

函式

requests.request(method: str, url: str, data: bytes | None = None, json: Any | None = None, files: dict | None = None, headers: dict = {}, auth: tuple | None = None, stream: Any | None = None) Response

url 傳送一個 HTTP 請求並回傳一個 requests.Response

  • method --- 以 str 形式表示的 HTTP 方法(例如 "GET""POST")。

  • url --- 目標 URL。必須以 http://https:// 開頭。

  • data --- 原始請求主體。若有設定,則會自動加上 Content-Length

  • json --- 序列化為 JSON 並作為主體傳送的物件。會設定 Content-Type: application/json

  • files --- 將欄位名稱對應到 (filename, fileobj) 元組的字典。以 multipart/form-data 形式傳送。

  • headers --- 額外請求標頭的字典。

  • auth --- 用於 HTTP 基本驗證的 (username, password) 元組。

  • stream --- 為了 API 相容性而接受;未使用。

requests.head(url: str, **kw: Any) Response

傳送一個 HTTP HEAD 請求並回傳一個 Response

HEADGET 相同,差別在於伺服器只回覆狀態行與標頭,主體為空。可用它來檢查資源是否存在、在不下載酬載的情況下檢視 Content-Length / Content-Type,或在發出較重的 GET 之前先探測 URL。

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • headers(關鍵字引數)-- 額外請求標頭的字典。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

來自 request()data / json / files / stream 為求完整性而接受,但對 HEAD 而言鮮少有意義。

requests.get(url: str, **kw: Any) Response

傳送一個 HTTP GET 請求並回傳一個 Response

GET 是用於擷取 url 所識別資源之表示形式的標準動詞。它是安全的(不會造成伺服器端狀態變更)且具冪等性

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • headers(關鍵字引數)-- 額外請求標頭的字典(例如 AuthorizationAccept)。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

透過 data / json 傳送請求主體是底層 request() 所允許的,但會被大多數伺服器忽略。

requests.post(url: str, **kw: Any) Response

傳送一個 HTTP POST 請求並回傳一個 Response

POSTurl 提交資料,通常用於建立新的從屬資源、觸發表單提交,或叫用某個動作。它既不安全也不具冪等性:重複呼叫可能會建立重複的資源。

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • data(關鍵字引數)-- 原始請求主體(bytes 類)。會自動傳送 Content-Length 標頭。

  • json(關鍵字引數)-- 序列化為 JSON 並作為主體傳送的物件。會設定 Content-Type: application/json

  • files(關鍵字引數)-- 將欄位名稱對應到 (filename, fileobj) 的字典。以 multipart/form-data 形式傳送。

  • headers(關鍵字引數)-- 額外請求標頭的字典。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

data / json / files 之中至多傳入一個。

requests.put(url: str, **kw: Any) Response

傳送一個 HTTP PUT 請求並回傳一個 Response

PUT 以所提供的表示形式取代 url 處的資源,若不存在則建立它。它具冪等性:重複相同的 PUT 會產生相同的最終狀態。

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • data(關鍵字引數)-- 原始的替換主體(bytes 類)。

  • json(關鍵字引數)-- 序列化為 JSON 並作為替換主體傳送的物件。會設定 Content-Type: application/json

  • headers(關鍵字引數)-- 額外請求標頭的字典。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

傳入 datajson 以攜帶新的表示形式。

requests.patch(url: str, **kw: Any) Response

傳送一個 HTTP PATCH 請求並回傳一個 Response

PATCHurl 處的資源套用部分修改 -- 只有包含在請求主體中的欄位會變更。與 PUT 不同,它不要求具冪等性(不過許多 API 會使其具冪等性)。

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • data(關鍵字引數)-- 原始的差異主體(bytes 類)。格式取決於伺服器(例如 JSON Patch、JSON Merge Patch)。

  • json(關鍵字引數)-- 序列化為 JSON 的差異物件。會設定 Content-Type: application/json

  • headers(關鍵字引數)-- 額外請求標頭的字典。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

requests.delete(url: str, **kw: Any) Response

傳送一個 HTTP DELETE 請求並回傳一個 Response

DELETE 請求移除 url 處的資源。它具冪等性:刪除一個已被刪除的資源並非錯誤(伺服器通常會回傳 404,但最終狀態相同)。

引數:

  • url -- 目標 URL;必須以 http://https:// 開頭。

  • headers(關鍵字引數)-- 額外請求標頭的字典。

  • auth(關鍵字引數)-- 用於 HTTP 基本驗證的 (username, password) 元組。

透過 data / json 傳送主體是底層 request() 所允許的,但鮮少與 DELETE 一起使用。