You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API响应中total_count字段引发KeyError问题排查求助

问题修复方案

错误原因

从Postman返回的响应结构能看到,total_count、per_page、total_pages这些分页字段嵌套在page_info字典下,但你的代码直接从响应根层级(response['total_count'])获取这些字段,自然找不到对应键,触发KeyError。

修复步骤

1. 修正分页信息的提取逻辑

从响应的page_info字段中获取分页参数,优先使用API返回的total_pages(比自己计算更准确,避免整除误差):

getURL = 'https://example.com/v1/users'
response = make_api_call(getURL)

# 提取嵌套的分页信息
page_info = response['page_info']
# 直接用API返回的总页数,无需自行计算
total_pages = page_info['total_pages']

# 若必须自行计算(不推荐),需使用page_info内的字段:
# total_pages = page_info['total_count'] // page_info['per_page'] + (1 if page_info['total_count'] % page_info['per_page'] != 0 else 0)

2. 修复分页函数的参数传递问题

原paginate_results函数调用api_call时,没有传递API的URL参数(make_api_call需要第一个参数为URL),导致调用逻辑错误。调整函数定义,让它接收URL参数:

def paginate_results(api_url, api_call_func, total_pages):
    results = []
    for page_number in range(1, total_pages + 1):
        params = {'page': page_number}
        # 传递URL和分页参数调用API
        response = api_call_func(api_url, params=params)
        results.extend(response['data'])
    return results

3. 修正分页调用逻辑

调用分页函数时传入API URL:

results = paginate_results(getURL, make_api_call, total_pages)

可选:增强代码健壮性

为避免后续出现类似KeyError,可使用字典的get方法做容错处理:

response = make_api_call(getURL)
page_info = response.get('page_info', {})
total_pages = page_info.get('total_pages', 1)  # 默认值设为1,避免无数据时报错

完整修正代码

import requests

headers = {"Your-Auth-Header": "Value"}  # 确保headers已正确定义

def make_api_call(getURL, params={}):
    response = requests.get(getURL, params=params, headers=headers)
    response.raise_for_status()
    return response.json()

def paginate_results(api_url, api_call_func, total_pages):
    results = []
    for page_number in range(1, total_pages + 1):
        params = {'page': page_number}
        response = api_call_func(api_url, params=params)
        results.extend(response['data'])
    return results

# 获取总页数
getURL = 'https://example.com/v1/users'
response = make_api_call(getURL)
page_info = response['page_info']
total_pages = page_info['total_pages']

# 分页获取结果
results = paginate_results(getURL, make_api_call, total_pages)

内容的提问来源于stack exchange,提问作者Arun.K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:27:05