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

使用Python的requests库调用API并处理JSON响应的详细步骤

1. 安装request库

pip install requests

2. 发送GET请求

import requests

# 定义API地址
url = "https://api.example.com/data"

# 发送GET请求
response = requests.get(url)

# 检查HTTP状态码
if response.status_code == 200:
    # 解析JSON响应
    data = response.json()
    print("请求成功,数据内容:", data)
else:
    print(f"请求失败,状态码:{response.status_code}")

 3. 处理URL参数

params = {
    "param1": "value1",
    "param2": 123
}

response = requests.get(url, params=params)

4. 发送POST请求

payload = {
    "key1": "value1",
    "key2": "value2"
}

# 发送JSON格式数据
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)

# 或者使用data参数(表单格式)
# response = requests.post(url, data=payload)

5. 处理认证

headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    # 或使用API密钥:
    # "X-API-Key": "YOUR_API_KEY"
}

response = requests.get(url, headers=headers)

6. 提取JSON数据中的字段

假设返回的JSON结构如下:

{
    "status": "success",
    "data": {
        "id": 123,
        "name": "Example"
    }
}

提前数据的python代码:

resp_json = response.json()

# 获取嵌套字段
status = resp_json.get("status")
user_id = resp_json["data"]["id"]
user_name = resp_json["data"].get("name", "默认名称")

print(f"用户ID: {user_id}, 姓名: {user_name}")

7.错误处理

try:
    response = requests.get(url, timeout=5)  # 设置超时时间
    response.raise_for_status()  # 自动抛出HTTP错误
    
    data = response.json()
    print("解析到的数据:", data)

except requests.exceptions.RequestException as e:
    print(f"请求异常:{e}")
except ValueError as e:
    print(f"JSON解析失败:{e}")
except KeyError as e:
    print(f"JSON字段缺失:{e}")

8. 高级用法:处理分页API

page = 1
all_data = []

while True:
    response = requests.get(f"{url}?page={page}")
    page_data = response.json()
    
    if not page_data["results"]:
        break
    
    all_data.extend(page_data["results"])
    page += 1

print(f"总收集到{len(all_data)}条数据")

关键点:

1. HTTP方法选择:根据API要求使用get()post()put()delete()

2. 参数传递

  • GET参数用 params

  • POST数据用 data(表单)或 json(JSON格式)

3. 请求头设置:通过 headers 参数添加认证信息

4. 响应处理

  • 检查 status_code

  • 使用 .json()解析响应内容

  • 使用 .get()方法避免 KeyError

5. 异常处理:捕获网络错误和解析错误

相关文章:

  • 【C++进阶学习】第一讲——继承(下)---深入挖掘继承的奥秘
  • Android更新时区版本-ianaVersion
  • docker-compose部署mongodb副本集集群
  • 介绍一下安装时情况 kubernetes 集群
  • RLHF-GRPO
  • 快速部署:在虚拟机上安装 CentOS 7 的详细步骤
  • css实现元素垂直居中显示的7种方式
  • 23中设计模式之观察者模式
  • 05类加载机制篇(D4_虚拟机类加载机制)
  • 【数据结构】堆(挑战从零基础到进阶)
  • 团队学习—系统思考
  • plt和cv2有不同的图像表示方式和颜色通道顺序
  • c语言笔记 指针进阶
  • 机器学习12-视觉识别任务
  • 【音视频】ffplay简单过滤器
  • STM32 SPI的应用开发
  • NET431-C协议网关:跨网段·零编程PLC工业通信终极方案
  • 八卡5090服务器首发亮相!
  • idea创建测试方法测试接口是否能够正常使用
  • [Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串
  • 自动做网页的网站/移动优化课主讲:夫唯老师