Python(requests.post()、requests.get())

发布时间 2023-12-20 09:08:38作者: 做梦当财神

1. requests.post()

requests.post 是 Python 中 requests 库提供的一个函数,用于发送 HTTP POST 请求。这个函数的基本语法如下:

import requests

response = requests.post(url, data=None, json=None, headers=None, params=None, auth=None, timeout=None)

其中参数的含义如下:

  • url: 字符串,表示请求的目标 URL。
  • data: 字典、字节序列或文件,作为请求的正文发送给服务器。
  • json: JSON 可序列化的对象,作为请求的正文发送给服务器。如果同时传递了 datajsonjson 参数会覆盖 data
  • headers: 字典,包含请求头的键值对。
  • params: 字典或字节序列,作为 URL 的查询参数。
  • auth: 元组,表示 HTTP 认证的用户名和密码。
  • timeout: 超时时间,以秒为单位,表示在请求过程中等待服务器响应的最大时间。

这个函数会返回一个 Response 对象,其中包含了服务器的响应信息。你可以通过这个对象来访问服务器返回的内容、状态码等信息。

一个简单的例子:

import requests

url = "https://example.com/api"
data = {"key1": "value1", "key2": "value2"}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=data, headers=headers)

print(response.status_code)
print(response.text)

在这个例子中,我们使用 requests.post 发送了一个 JSON 数据到指定的 URL,并通过响应对象访问了服务器返回的状态码和响应内容。



2. requests.get()

requests.get 是 Python 中 requests 库提供的一个函数,用于发送 HTTP GET 请求。这个函数的基本语法如下:

import requests

response = requests.get(url, params=None, headers=None, auth=None, timeout=None)

其中参数的含义如下:

  • url: 字符串,表示请求的目标 URL。
  • params: 字典或字节序列,作为 URL 的查询参数。
  • headers: 字典,包含请求头的键值对。
  • auth: 元组,表示 HTTP 认证的用户名和密码。
  • timeout: 超时时间,以秒为单位,表示在请求过程中等待服务器响应的最大时间。

这个函数会返回一个 Response 对象,其中包含了服务器的响应信息。你可以通过这个对象来访问服务器返回的内容、状态码等信息。

一个简单的例子:

import requests

url = "https://example.com/api"
params = {"key1": "value1", "key2": "value2"}
headers = {"Authorization": "Bearer <your_access_token>"}

response = requests.get(url, params=params, headers=headers)

print(response.status_code)
print(response.text)

在这个例子中,我们使用 requests.get 向指定的 URL 发送了一个带有查询参数和自定义请求头的 GET 请求,并通过响应对象访问了服务器返回的状态码和响应内容。



3. requests.post() 与 requests.get() 区别

requests.postrequests.getrequests 库中用于发送 HTTP 请求的两个主要函数,它们有以下区别:

  1. HTTP 方法:
    • requests.post: 用于发送 HTTP POST 请求,通常用于向服务器提交数据,如表单数据、JSON 数据等。
    • requests.get: 用于发送 HTTP GET 请求,通常用于从服务器获取数据,将参数附加在 URL 上。
  2. 传递数据:
    • requests.post
      • 使用 data 参数传递数据,通常用于发送表单数据。
      • 可以使用 json 参数传递 JSON 数据,方便发送 JSON 格式的数据。
    • requests.get
      • 使用 params 参数传递数据,将参数附加在 URL 后面,形成查询字符串。
  3. 请求体:
    • requests.post: 允许发送包含在请求体中的数据,适合发送大量数据。
    • requests.get: 通常不包含请求体,数据主要通过 URL 的查询字符串传递。
  4. 安全性:
    • requests.post: 因为数据传递在请求体中,相对于 URL,POST 请求更适合传递敏感数据。
    • requests.get: 由于参数附加在 URL 上,可能会在 URL 中留下痕迹,不适合传递敏感数据。
  5. 缓存:
    • requests.post: 不会被浏览器缓存。
    • requests.get: 可能会被浏览器缓存,特别是对于相同的 URL 和参数。
  6. 用途:
    • requests.post: 适用于向服务器提交数据,如登录、上传文件等。
    • requests.get: 适用于从服务器获取数据,如获取页面、API 数据等。

示例:

import requests

# POST 请求
post_url = "https://example.com/api"
post_data = {"key1": "value1", "key2": "value2"}
post_response = requests.post(post_url, data=post_data)

# GET 请求
get_url = "https://example.com/api"
get_params = {"key1": "value1", "key2": "value2"}
get_response = requests.get(get_url, params=get_params)

总的来说,选择使用 requests.post 还是 requests.get 取决于你的具体需求,即是要向服务器提交数据还是从服务器获取数据。