在Python中处理HTTP状态码是Web开发中不可或缺的一部分,它能够帮助开发者快速判断请求结果并采取相应措施。以下是使用requests库处理HTTP状态码的完整指南,涵盖常见状态码及其处理策略。
状态码分类及常见代码
HTTP状态码由三位数字组成,根据首位数字可分为五类:
- 2xx(成功):如200 OK表示请求成功,204 No Content表示请求成功但无内容返回。
- 3xx(重定向):如301 Moved Permanently表示资源永久重定向,302 Found表示临时重定向。
- 4xx(客户端错误):如400 Bad Request表示请求有误,404 Not Found表示资源未找到。
- 5xx(服务器错误):如500 Internal Server Error表示服务器内部错误,503 Service Unavailable表示服务器暂时不可用。
使用requests库处理状态码
获取状态码
使用requests.get()等方法发送请求后,通过response.status_code属性获取状态码。例如:
python复制代码
import requests |
|
response = requests.get('https://jsonplaceholder.typicode.com/posts') |
|
print(response.status_code) |
基于状态码的处理逻辑
通过条件语句判断状态码并执行相应操作:
python复制代码
if response.status_code == 200: |
|
print("请求成功") |
|
data = response.json() # 处理数据 |
|
elif response.status_code == 404: |
|
print("资源未找到") |
|
else: |
|
print(f"发生错误: {response.status_code}") |
异常处理
使用try-except块捕获网络异常,例如超时或连接失败:
python复制代码
try: |
|
response = requests.get('https://example.com', timeout=5) |
|
response.raise_for_status() # 非200状态码抛出异常 |
|
except requests.exceptions.Timeout: |
|
print("请求超时") |
|
except requests.exceptions.ConnectionError: |
|
print("连接错误") |
|
except requests.exceptions.HTTPError as err: |
|
print(f"HTTP错误: {err}") |
状态码处理策略
- 2xx:直接处理响应内容,如解析JSON或保存文件。
- 3xx:根据需求处理重定向(requests默认自动处理)。
- 4xx:检查请求URL、参数或权限,例如404时提示用户资源不存在。
- 5xx:记录日志并通知管理员,或尝试重试请求。
通过结合状态码与异常处理,可以显著提升程序的健壮性和用户体验。开发者应根据具体业务需求,灵活设计状态码处理逻辑,确保系统在各种网络条件下稳定运行。