文章目录
在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 requests
url = '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 requests
url = '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 requests
url = '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 requests
url = '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并处理返回的数据。