Python使用requests调用接口


在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并处理返回的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值