当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/250981.html

相关文章:

  • React 实现九宫格抽奖游戏
  • 超高速总线CDCTL01A 芯片在机器人领域的应用解析
  • React组件通信——context(提供者/消费者)
  • NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程
  • 一个字节一定是8比特吗?如何查看二进制文件前几个字节?计算机存储单元bit?数据类型大小?
  • 函数指针与指针函数:本质区别与高级应用
  • YOLOv4 改进点详解
  • Spring Boot多数据源切换:三种实现方式详解与实战
  • 二.干货干货!!!SpringAI入门到实战-记忆存储和会话隔离
  • Adobe 发布 Android 版 Photoshop(目前免费测试)
  • 电阻篇---下拉电阻
  • 行列式的逆序数法定义 线性代数
  • 论文笔记 <交通灯> <多智能体>DERLight双重经验回放灯机制
  • Web server failed to start. Port XXX was already in use.
  • Nginx限速配置详解
  • CountDownLatch与CyclicBarrier的区别
  • AOP +ThreadLocal实现对接口监控
  • 共享内存实现进程通信
  • C++ STL常用二分查找算法
  • 第二十六周:序列化和反序列化
  • Jenkins 全面深入学习目录
  • MFE微前端:如何捕捉远程应用的remote.js加载失败的错误?
  • 001微信小程序入门
  • sql中like and not like的优化
  • Web后端基础:数据库
  • 【1】Redis 缓存穿透原理和解决方案
  • 操作系统核心名词解释--期末简答题快速复习
  • 【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!
  • Python 训练营打卡 Day 46-通道注意力
  • 电影院管理系统的设计与实现