Python(requests.post()、requests.get())
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 可序列化的对象,作为请求的正文发送给服务器。如果同时传递了data
和json
,json
参数会覆盖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.post
和 requests.get
是 requests
库中用于发送 HTTP 请求的两个主要函数,它们有以下区别:
- HTTP 方法:
requests.post
: 用于发送 HTTP POST 请求,通常用于向服务器提交数据,如表单数据、JSON 数据等。requests.get
: 用于发送 HTTP GET 请求,通常用于从服务器获取数据,将参数附加在 URL 上。
- 传递数据:
requests.post
:- 使用
data
参数传递数据,通常用于发送表单数据。 - 可以使用
json
参数传递 JSON 数据,方便发送 JSON 格式的数据。
- 使用
requests.get
:- 使用
params
参数传递数据,将参数附加在 URL 后面,形成查询字符串。
- 使用
- 请求体:
requests.post
: 允许发送包含在请求体中的数据,适合发送大量数据。requests.get
: 通常不包含请求体,数据主要通过 URL 的查询字符串传递。
- 安全性:
requests.post
: 因为数据传递在请求体中,相对于 URL,POST 请求更适合传递敏感数据。requests.get
: 由于参数附加在 URL 上,可能会在 URL 中留下痕迹,不适合传递敏感数据。
- 缓存:
requests.post
: 不会被浏览器缓存。requests.get
: 可能会被浏览器缓存,特别是对于相同的 URL 和参数。
- 用途:
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
取决于你的具体需求,即是要向服务器提交数据还是从服务器获取数据。