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) 元组。

底层的 request() 允许通过 data / json 传递请求体,但大多数服务器会忽略它。

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) 元组。

底层的 request() 允许通过 data / json 传递请求体,但很少与 DELETE 一起使用。