请求协助:访问API响应pagination字段触发KeyError问题
解决API响应中'pagination'字段的KeyError问题
我猜你遇到的问题大概率是这个API并不是在所有情况下都会返回pagination字段——比如当请求的limit参数对应的结果已经是最后一页、没有更多数据可返回时,API就不会包含这个字段,这也是为什么你访问title没问题(它是始终存在的顶级字段),但pagination会触发KeyError。
结合你的代码,给你几个可行的解决办法:
方法1:使用字典的get()方法(推荐)
get()方法允许你指定一个默认值,当键不存在时会返回这个默认值,而不是抛出错误:
response = requests.get("https://api.weather.gov/alerts?limit=1", timeout=5) data = response.json() # 当pagination不存在时返回None,你也可以换成空字典{} pag_object = data.get('pagination', None) if pag_object is not None: # 处理分页逻辑 next_url = pag_object.get('next') print(f"下一页链接:{next_url}") else: print("没有更多分页数据")
方法2:先检查字段是否存在
在访问字段前先判断键是否在字典中:
response = requests.get("https://api.weather.gov/alerts?limit=1", timeout=5) data = response.json() if 'pagination' in data: pag_object = data['pagination'] next_url = pag_object['next'] print(f"下一页链接:{next_url}") else: print("当前没有分页信息")
补充说明
你提供的JSON片段确实包含pagination字段,但那可能是存在多页数据时的响应。实际请求时,如果API返回的结果已经是全部数据(比如测试环境只有1条告警),就不会返回这个字段。所以永远不要假设API的响应字段是始终存在的,尤其是分页、列表这类和数据量相关的字段。
内容的提问来源于stack exchange,提问作者klex52s
相关产品推荐
相关产品推荐

