使用Microsoft Graph API时应该将User-Agent设置为什么?

时间:2018-04-04 15:15:03

标签: microsoft-graph onedrive

我目前正在开发一个使用.NET SDK for Microsoft Graph API发出请求的应用程序。专门用于检索有关用户及其OneDrives的信息。

Microsoft通过返回HTTP 429状态代码来限制API请求,并且我已使用Retry-After标头实现了退避。然而,我注意到在看到一些请求之后,我似乎受到了限制。

我一直在使用Microsoft Graph Explorer来测试我的一些API调用,并注意到在通过该方法访问API时我似乎从未得到429响应。在看到人们在Linux上遇到OneDrive客户端问题的报告后,他们设法通过更改User-Agent标题来解决问题,我想也许我需要为我的请求设置User-Agent

结果是,如果我将User-Agent标头设置为Mozilla/5.0,那么所有限制问题似乎都会消失。我已经搜索了高低,到目前为止还没有设法找到有关User-Agent应该是什么的任何文档,我宁愿避免让我的应用程序冒充浏览器,所以我想知道是否有我可能错过的任何指导或文件?

例如,Mozilla/5.0的用户代理似乎不会导致限制,但MyApp/1.0会导致限制。

2 个答案:

答案 0 :(得分:2)

Microsoft有一些处理节流的最佳实践:

https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online#how-to-decorate-your-http-traffic-to-avoid-throttling

您应按以下步骤装饰您的http用户代理:

NONISV|CompanyName|AppName/Version

标识为NONISV,并包括公司名称,应用名称(以竖线字符分隔),然后添加以斜杠分隔的版本号

ISV|CompanyName|AppName/Version

标识为ISV,并包含公司名称,应用名称(以竖线字符分隔),然后添加用斜杠字符分隔的版本号

答案 1 :(得分:1)

User-Agent标题上没有任何指导,说实话,我不确定为什么这会对限制产生任何影响。

Microsoft Graph中的限制由您正在与之交互的基础服务处理。例如,/notes/端点限制由OneNote控制,而/messages由Exchange控制。

在大多数情况下,OneDrive将按每个用户的每个应用的并发请求数量进行限制。因此,使用委派权限,您的应用通常应该能够同时上传4个文件而不会出现问题。除此之外,您将开始看到429个回复。