首页 > 解决方案 > 即使 $top=1,Microsoft Graph 也会显示 @nextlink?

问题描述

我们正在使用 MS Graph OData API 查询数据,但我发现 msGraph 出现nextlink意外。

例如,即使我打算通过指定仅查询一条记录$top=1

https://graph.microsoft.com/v1.0/users?$top=1

在响应中有一个@nextlink,这会导致我们的工具对该链接进行另一个查询。

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "**@odata.nextLink**": "https://graph.microsoft.com/v1.0/users?$top=1&$skiptoken=X%2744537074020001000000223A4164616D73404D333635783231343335352E6F6E6D6963726F736F66742E636F6D29557365725F36653762373638652D303765322D343831302D383435392D343835663834663866323034B900000000000000000000%27",
    "value": [
        {
            "id": "6e7b768e-07e2-4810-8459-485f84f8f204",
            "businessPhones": [],
            "displayName": "Conf Room Adams",
            "givenName": null,
            "jobTitle": null,
            "mail": "Adams@M365x214355.onmicrosoft.com",
            "mobilePhone": null,
            "officeLocation": null,
            "preferredLanguage": null,
            "surname": null,
            "userPrincipalName": "Adams@M365x214355.onmicrosoft.com"
        }
    ]
}

可以在图形浏览器中重现它

它是否按预期工作?我认为应该没有下一个链接,因为我只想要一个记录。这是一个错误吗?

标签: microsoft-graph-api

解决方案


使用$top=x实际上并不意味着

我希望你只给我看前 x 条记录,而忽略其余的

它的作用(基于查询参数 docs)是:

设置结果的页面大小。

您看到的是预期的结果,因为 using$top是使用分页的情况之一:

由于服务器端分页或使用 $top 查询参数专门限制请求中的页面大小,一些针对 Microsoft Graph 的查询会返回多页数据。

并进一步:

当结果集跨越多个页面时,Microsoft Graph@odata.nextLink会在响应中返回一个属性,其中包含指向下一页结果的 URL。

这正好回答了你的问题。如果你想。随时阅读更多关于分页的信息


还要记住,在使用$top查询参数时,记住排序是一个好习惯(来源:OData 官方文档)。


推荐阅读