在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 库处理状态码****
1.
获取状态码
使用requests.get()等方法发送请求后,通过response.status_code属性获取状态码。例如:
2.
3.
python复制代码
4.
5.
| import requests | |
|---|---|
| response = requests.get('jsonplaceholder.typicode.com/posts') | |
| print(response.status_code) |
6.
7.
基于状态码的处理逻辑
通过条件语句判断状态码并执行相应操作:
8.
9.
python复制代码
10.
11.
| if response.status_code == 200: | |
|---|---|
| print("请求成功") | |
| data = response.json() # 处理数据 | |
| elif response.status_code == 404: | |
| print("资源未找到") | |
| else: | |
| print(f"发生错误: {response.status_code}") |
12.
13.
异常处理
使用try-except块捕获网络异常,例如超时或连接失败:
14.
15.
python复制代码
16.
17.
| try: | |
|---|---|
| response = requests.get('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}") |
18.
状态码处理策略****
· 2xx:直接处理响应内容,如解析JSON或保存文件。
· 3xx:根据需求处理重定向(requests默认自动处理)。
· 4xx:检查请求URL、参数或权限,例如404时提示用户资源不存在。
· 5xx:记录日志并通知管理员,或尝试重试请求。
通过结合状态码与异常处理,可以显著提升程序的健壮性和用户体验。开发者应根据具体业务需求,灵活设计状态码处理逻辑,确保系统在各种网络条件下稳定运行。