python - 如何在 Python 中使用 while 循环发出多个 API 请求?
问题描述
我需要向仅响应最多 200 个结果的 API 发出请求。如果数据总量超过 200 条,API 也会响应一个lastKey
我需要传递给新请求的参数。当所有数据都返回时,lastKey
-param 不再返回。
我的问题是如何以简单、干净的方式做到这一点?这就是我提出第一个请求的方式,我可以查看是否有lastKey
-param:
url = 'https://example.com'
moreData = False
with requests.Session() as api:
data = requests.get(url)
try:
data.raise_for_status()
except HTTPError as e:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
result = data.json()
if 'lastKey' in result:
url = 'https://example.com&lastKey=' + result['lastKey']
moreData = True
例如,我怎么能在 while 循环中完成这一切?
解决方案
只需从循环中获取第一个结果,然后在结果中有“lastkey”时while
调用您的 api
url = 'https://example.com'
with requests.Session() as api:
data = requests.get(url)
try:
data.raise_for_status()
except HTTPError as e:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
result = data.json()
while 'lastKey' in result:
url = 'https://example.com&lastKey=' + result['lastKey']
with requests.Session() as api:
data = requests.get(url)
try:
data.raise_for_status()
except HTTPError as e:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
result = data.json()
推荐阅读
- c++ - 有没有办法使用 C++ 实时阅读文本?
- laravel - 如何在控制器之间创建验证码会话
- python - python pandas:将字典转换为长格式,计数基于字符串变量的不同值
- c# - 在 C# 中指向或反射到对象
- python - 使用 matplotlib 制作堆栈图时出现“Keyerror”
- ios - 未调用具有 Firebase 消息回调的 Flutter 插件
- yocto - 构建 gcc-cross 失败,没有提供“gcc-cross”
- python - 如何从python中的列表中计算单词列表
- r - 如何在河图中使我的字体变小?
- reactjs - reactjs中如何根据条件隐藏按钮