第二章:Requests 入门——掌握 HTTP 请求的基本用法
【摘要】 上一章我们了解了 Requests 的定位。这一章正式开始使用它。1. GET 请求最基本的 GET:import requestsresponse = requests.get( "https://example.com")print(response.status_code)print(response.text)其中:response.status_code表示 HTTP 状态码...
上一章我们了解了 Requests 的定位。
这一章正式开始使用它。
1. GET 请求
最基本的 GET:
import requests
response = requests.get(
"https://example.com"
)
print(response.status_code)
print(response.text)
其中:
response.status_code
表示 HTTP 状态码。
例如:
200
通常意味着请求成功。
2. 添加 Query 参数
实际 API 通常需要参数。
例如:
https://example.com/search?q=python&page=1
Requests 可以直接使用 params:
params = {
"q": "python",
"page": 1
}
response = requests.get(
"https://example.com/search",
params=params
)
print(response.url)
Requests 会自动将参数编码到 URL 中。
3. POST 请求
POST 请求:
response = requests.post(
"https://example.com/api"
)
提交表单:
data = {
"username": "admin",
"password": "123456"
}
response = requests.post(
"https://example.com/login",
data=data
)
如果 API 使用 JSON:
response = requests.post(
"https://example.com/api",
json={
"username": "admin"
}
)
这里推荐优先使用 json=,因为 Requests 会帮助我们完成 JSON 序列化以及相关请求头处理。
4. 自定义请求头
API 开发中经常需要 Authorization:
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"User-Agent": "MyApp/1.0"
}
response = requests.get(
"https://example.com/api",
headers=headers
)
也可以设置 Content-Type:
headers = {
"Content-Type": "application/json"
}
5. 获取 JSON
如果服务器返回 JSON:
response = requests.get(
"https://example.com/api"
)
data = response.json()
print(data)
例如服务器返回:
{
"name": "Alice",
"age": 20
}
那么:
print(data["name"])
即可得到:
Alice
6. 超时设置
实际项目中,一个非常重要的参数是:
timeout
例如:
response = requests.get(
"https://example.com",
timeout=10
)
这意味着请求不能无限等待。
生产环境中不建议完全省略 timeout。
否则服务器异常、网络故障或者连接一直没有响应时,程序可能长期阻塞。
7. HTTP 异常处理
可以通过:
response.raise_for_status()
检查 HTTP 状态。
例如:
response = requests.get(
"https://example.com"
)
response.raise_for_status()
如果服务器返回 4xx 或 5xx,Requests 会抛出异常。
结合异常处理:
try:
response = requests.get(
"https://example.com",
timeout=10
)
response.raise_for_status()
except requests.RequestException as e:
print("请求失败:", e)
这就是一个更加可靠的基本 HTTP 客户端。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)