scu*_*bbo 2 python microsoft-graph-sdks microsoft-graph-api
我正在掌握Python SDK,之前从未使用过 GraphQL (但我熟悉基本概念)。我能够odata_next_link从响应中检索值,但我不确定如何使用它。我从这里注意到:
您应该在下一页结果的请求中的 @odata.nextLink 属性中包含整个 URL。根据执行查询的 API,@odata.nextLink URL 值将包含 $skiptoken 或 $skip 查询参数。URL 还包含原始请求中存在的所有其他查询参数。不要尝试提取 $skiptoken 或 $skip 值并将其用于不同的请求。
但是,我不确定如何在下一个请求中包含该 URL。目前,我的查询看起来像response = await graph_client.groups.by_group_id(group_id).transitive_members.get()- 我没有看到更改基本网址的选项。我想我可以做这样的事情:
query_params = GroupsRequestBuilder.GroupsRequestBuilderGetQueryParameters(
skip_token = parse_qs(urlparse(response.odata_next_link).query)['$skipToken'][0]
)
request_configuration = GroupsRequestBuilder.GroupsRequestBuilderGetRequestConfiguration(
query_parameters=query_params
)
response = await graph_client.[...].get(request_configuration)
Run Code Online (Sandbox Code Playgroud)
但该报告GroupsRequestBuilder.GroupsRequestBuilderGetQueryParameters.__init__() got an unexpected keyword argument 'skip_token'(如果我尝试命名参数skiptoken或,则类似skipToken)
小智 7
我们还没有适用于 Python SDK 的页面迭代器,但是增加了对使用请求的原始 url 的支持。在分页的情况下,用户可以使用odata_next_link属性值使用with_url发出新请求并获取下一页中的项目。
这是一个工作示例:
from msgraph.generated.users.users_request_builder import UsersRequestBuilder
async def get_users():
query_params = UsersRequestBuilder.UsersRequestBuilderGetQueryParameters(
select=["id", "displayName", "createdDateTime"],
top=5,
)
request_config = UsersRequestBuilder.UsersRequestBuilderGetRequestConfiguration(
query_parameters=query_params
)
users_list = []
users = await client.users.get(request_configuration=request_config)
for user in users.value:
users_list.append(user)
next_link = users.odata_next_link
while next_link:
users = await client.users.with_url(next_link).get()
next_link = users.odata_next_link
for user in users.value:
users_list.append(user)
print(len(users_list))
Run Code Online (Sandbox Code Playgroud)