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與各方法的輔助函式回傳。- encoding: str¶
用於解碼
requests.Response.headers與requests.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。HEAD與GET相同,差別在於伺服器只回覆狀態行與標頭,主體為空。可用它來檢查資源是否存在、在不下載酬載的情況下檢視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(關鍵字引數)-- 額外請求標頭的字典(例如Authorization或Accept)。auth(關鍵字引數)-- 用於 HTTP 基本驗證的(username, password)元組。
透過
data/json傳送請求主體是底層request()所允許的,但會被大多數伺服器忽略。
- requests.post(url: str, **kw: Any) Response¶
傳送一個 HTTP
POST請求並回傳一個Response。POST向url提交資料,通常用於建立新的從屬資源、觸發表單提交,或叫用某個動作。它既不安全也不具冪等性:重複呼叫可能會建立重複的資源。引數:
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)元組。
傳入
data或json以攜帶新的表示形式。
- requests.patch(url: str, **kw: Any) Response¶
傳送一個 HTTP
PATCH請求並回傳一個Response。PATCH對url處的資源套用部分修改 -- 只有包含在請求主體中的欄位會變更。與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一起使用。