处理 Python 分页 API 请求中的最后一页

Handling final page in Python paginated API request

我正在请求 Microsoft 的 Graph API,我在其中使用以下函数来请求多个页面。我正在尝试请求所有页面,合并 json 文件,最后将它们写入 pandas 数据框。

v = "v1.0"
r = "/users?$filter=userType eq 'Member'&$select=displayName,givenName,jobTitle,mail,department&$top=200"

def query(v, r):
    all_records = []
    url = uri.format(v=v, r=r)
    
    while True:
        if not url:
            break
        result = requests.get(url, headers=headers)
        if result.status_code == 200:
            json_data = json.loads(result.text)
            all_records = all_records + json_data["value"]
            url = json_data["@odata.nextLink"]
    return all_records

while-loop 遍历所有页面,但是当我 运行 函数时出现错误:

KeyError: '@odata.nextLink'

我假设这是因为循环到达了最后一页,因此找不到 '@odata.nextLink'。但是我该如何处理呢?

你在做

url = json_data["@odata.nextLink"]

这表明 json_datadict,因此您应该可以使用 .get 方法,当找不到密钥时 returns 默认值(None默认情况下),请尝试执行以下操作并写下它是否正常工作:

url = json_data.get("@odata.nextLink")
if url is None:
    print("nextLink not found")
else:
    print("nextLink found")