首页 > 解决方案 > 如何在 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 循环中完成这一切?

标签: python

解决方案


只需从循环中获取第一个结果,然后在结果中有“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()

推荐阅读