如何检查 Microsoft Graph API 使用量/配额限制?

luc*_*sdc 5 azure-active-directory microsoft-graph-api

我有一个使用 Microsoft Graph API 的应用程序,我正在尝试检查 API 的使用情况以及更多信息,例如配额限制、计费等。我如何获取这些类型的信息?

Sha*_*izi 5

Microsoft Graph 配额限制的计算非常复杂。例如,返回用户列表的单个查询可能会占用 X 个资源。对租户中应用程序的另一个查询(假设您拥有与用户相同数量的应用程序)可能会占用 2 倍的资源,因为在后台,AAD 正在从多个位置收集信息来表示应用程序。

这只是一个虚构的示例,但要注意的是,您没有简单的方法可以从 Microsoft Graph 等服务中获得明确定义的“配额”限制。更不用说配额和节流限制可能会根据正在访问的租户(1K 用户租户与 100K 用户租户)、您正在访问的 API(Outlook 可能具有与 SharePoint 不同的节流行为)等动态变化。

相反,您应该在应用程序中构建在达到此类限制后处理返回给您的明确错误的能力,并使用建议的时间范围和方法重新 ping 端点。

所有这些都记录在此处:Microsoft Graph throttling guide

发生节流时会发生什么?

发生限制时,Microsoft Graph 返回 HTTP 状态代码 429(请求过多),请求失败。在失败请求的响应标头中返回建议的等待时间。

处理节流的最佳实践

实施错误处理时,请使用 HTTP 错误代码 429 来检测限制。失败的响应在响应头中包含 Retry-After 字段。使用 Retry-After 延迟回退请求是从限制中恢复的最快方法,因为 Microsoft Graph 在客户端受到限制时会继续记录资源使用情况。

  1. 等待 Retry-After 字段中指定的秒数。

  2. 重试请求。

  3. 如果请求再次失败并显示 429 错误代码,则您仍然受到限制。继续使用推荐的 Retry-After 延迟并重试请求,直到成功。

你还应该看看这里:微软节流模式