背景介绍
本项目旨在实现对URL和参数的HTTP请求处理,通过Python实现数据解析并返回结果。使用requests库进行网络请求,验证输入参数后解析响应数据,确保输出符合预期格式。
思路分析
- 网络请求封装:使用requests库封装HTTP请求请求,支持GET/POST请求,并处理常见错误如超时。
- 参数验证与数据解析:验证输入参数的合法性,确保参数类型正确(如整数/字符串),并解析响应为JSON格式的字典。
- 本地环境验证:通过测试输入参数后验证结果是否正确,确保代码可运行。
代码实现
import requests
def fetch_data(url, params):
"""获取URL和参数的HTTP数据并返回解析结果"""
try:
response = requests.get(url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
# 验证参数是否存在并检查类型
if 'name' not in data or not isinstance(data['name'], str):
raise ValueError("参数验证失败:'name' 必须是字符串,但获取到的是{}.".format(data['name']))
if 'age' not in data or not isinstance(data['age'], int):
raise ValueError("参数验证失败:'age' 必须是整数,但获取到的是{}.".format(data['age']))
return data
except requests.exceptions.RequestException as e:
raise ValueError(f"请求失败: {e}")
return {
"name": "John",
"age": 12
}
测试验证
示例输入
输入:https://api.example.com/data?name=John&age=12
输出:{"name": "John", "age": 12}
结果验证
result = fetch_data("https://api.example.com/data", {"name": "John", "age": 12})
print(result)
总结
本项目通过封装网络请求功能,验证参数合法性并解析响应数据,实现了从输入到输出的完整流程。代码简洁易读,支持本地环境测试,确保可维护性和可扩展性。