我们正在使用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"
}
]
}
一个人可以在graph-explorer中复制它
它按预期工作吗? 我认为应该没有nextlink,因为我只想要一个记录。这是错误吗?
答案 0 :(得分:1)
使用$top=x
并不实际
我希望您仅向我显示x条记录,而忽略其余的
其角色(基于query parameter docs)是:
设置结果的页面大小。
您看到的是预期的结果,因为使用$top
是使用分页的情况之一:
某些针对Microsoft Graph的查询返回多页数据,可能是由于服务器端分页,或者是由于使用$ top查询参数专门限制了请求中的页面大小。 >
进一步:
当结果集跨越多个页面时,Microsoft Graph将在响应中返回一个
@odata.nextLink
属性,该属性包含指向下一页结果的URL。
准确回答您的问题。如果你想。随时阅读有关分页here的更多信息。
还请记住,在使用$top
查询参数时,记住有关排序的一种好习惯(来源:OData official documentation)。