如何分页浏览Microsoft Graph更改通知订阅?分页重复异常求助
Graph API订阅分页循环及多字段查询解决方案
分页循环问题的解决办法
遇到nextLink循环返回相同结果的情况,大概率是Graph API分页机制的临时异常或默认参数问题,可通过以下方式解决:
- 手动指定$top拉取全量数据:订阅列表默认分页大小为20,最大支持
$top=100。直接请求GET /subscriptions?$top=100就能一次性获取所有22个订阅,跳过分页操作。 - 手动构造分页请求替代nextLink:若必须分页,不要使用返回的nextLink,而是手动指定
$skip参数:- 第一次请求:
GET /subscriptions?$top=20 - 第二次请求:
GET /subscriptions?$skip=20&$top=20
这样即可拿到剩余的2个订阅,规避可能异常的skiptoken。
- 第一次请求:
- 验证订阅状态:确认所有22个订阅均为活跃状态(未过期、未被删除),若存在失效订阅,Graph API可能不会返回,导致实际可返回数据仅20个,看似循环。可通过
$filter=status eq 'enabled'过滤活跃订阅验证。
通过非ID字段查询订阅的方法
Graph API支持用$filter参数对订阅的非ID字段进行查询,常用场景示例:
- 按通知URL过滤:
GET /subscriptions?$filter=notificationUrl eq 'https://your-webhook-endpoint.com/callback' - 按资源类型过滤:
GET /subscriptions?$filter=resource contains '/users/' - 按过期时间范围过滤:
GET /subscriptions?$filter=expirationDateTime gt 2024-12-31T00:00:00Z - 按变更类型过滤:
GET /subscriptions?$filter=changeType eq 'created,updated'
注意:$filter支持eq、ne、gt、lt、contains等运算符,resource、notificationUrl、expirationDateTime、changeType等常用字段均可过滤。
内容的提问来源于stack exchange,提问作者Ian Herbert
相关产品推荐
相关产品推荐

