Python使用requests调用接口
文章目录
- 安装requests库
- 使用requests库调用API
- 发送Get请求基本示例
- 带参数的GET请求
- 处理API认证(如API Key)
- 错误处理和异常捕获
- 处理返回值
- 获取状态
- 获取用户ID
- 获取用户名和详细信息
- 处理嵌套结构或列表返回值
- 获取所有用户信息列表中的每个用户的信息
在Python中使用requests库来调用外部API。
安装requests库
如果你还没有安装requests库,你可以通过pip来安装它:
pip install requests
使用requests库调用API
发送Get请求基本示例
import requests
# 定义API的URL
url = 'https://api.example.com/data'# 发送GET请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 解析JSON响应data = response.json()print(data)
else:print("请求失败,状态码:", response.status_code)
带参数的GET请求
如果你需要向API传递参数,可以使用params参数:
import requestsurl = 'https://api.example.com/data'
params = {'key1': 'value1', 'key2': 'value2'}response = requests.get(url, params=params)
if response.status_code == 200:data = response.json()print(data)
else:print("请求失败,状态码:", response.status_code)
POST请求
如果你需要向API发送POST请求,可以这样做:import requestsurl = 'https://api.example.com/data'
payload = {'key1': 'value1', 'key2': 'value2'}response = requests.post(url, json=payload) # 使用json参数发送JSON数据
if response.status_code == 200:data = response.json()print(data)
else:print("请求失败,状态码:", response.status_code)
处理API认证(如API Key)
很多API要求提供认证信息,比如API Key。这可以通过在请求头中添加认证信息来实现:
import requestsurl = 'https://api.example.com/data'
headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'} # 使用Bearer令牌进行认证response = requests.get(url, headers=headers)
if response.status_code == 200:data = response.json()print(data)
else:print("请求失败,状态码:", response.status_code)
错误处理和异常捕获
在调用API时,处理可能的错误是很重要的。你可以使用try-except块来捕获requests可能抛出的异常:
import requestsurl = 'https://api.example.com/data'
try:response = requests.get(url)response.raise_for_status() # 如果响应状态码不是200,将抛出HTTPError异常data = response.json()print(data)
except requests.exceptions.HTTPError as errh:print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:print("Timeout Error:", errt)
except requests.exceptions.RequestException as err:print("OOps: Something Else", err)
处理返回值
访问JSON数据中的信息
假设你的JSON数据结构如下:
{"status": "success","data": {"user_id": 12345,"username": "example_user","details": {"email": "user@example.com","phone": "123-456-7890"}}
}
你可以通过键名访问这些信息:
获取状态
status = data['status']
print(status) # 输出: success
获取用户ID
user_id = data['data']['user_id']
print(user_id) # 输出: 12345
获取用户名和详细信息
username = data['data']['username']
email = data['data']['details']['email']
phone = data['data']['details']['phone']
print(username) # 输出: example_user
print(email) # 输出: user@example.com
print(phone) # 输出: 123-456-7890
处理嵌套结构或列表返回值
如果JSON数据中包含嵌套的字典或列表,你可以用相同的方法访问它们:
{"status": "success","users": [{"user_id": 12345,"username": "example_user","email": "user@example.com"},{"user_id": 67890,"username": "another_user","email": "another@example.com"}]
}
获取所有用户信息列表中的每个用户的信息
for user in data['users']:user_id = user['user_id']username = user['username']email = user['email']print(f"User ID: {user_id}, Username: {username}, Email: {email}")
通过这些步骤,你可以在Python中有效地调用外部API并处理返回的数据。