Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Проверка того, как приложение обрабатывает регулирование API Microsoft 365
Время: 10 минут
Подключаемые модули:GraphRandomErrorPlugin, RetryAfterPlugin
Предварительные требования:настройка прокси-сервера разработки
Как правило, тестирование ограничения сложно, так как это происходит редко, когда серверы Microsoft 365 находятся под высокой нагрузкой. Используя прокси-сервер для разработки, вы можете моделировать ответы с задержками и проверять, правильно ли ваше приложение обрабатывает их.
Чтобы имитировать регулирование в API Microsoft 365, используйте GraphRandomErrorPlugin и RetryAfterPlugin. Возвращает GraphRandomErrorPlugin ответы регулирования для API Microsoft 365. Проверка RetryAfterPlugin подтверждает, что ваше приложение снижает активность, как это предусмотрено API.
Чтобы начать, включите GraphRandomErrorPlugin и RetryAfterPlugin в файле конфигурации прокси-сервера разработки.
Файл:devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
},
{
"name": "GraphRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "graphRandomErrorPlugin"
}
],
"urlsToWatch": [
"https://graph.microsoft.com/v1.0/*",
"https://graph.microsoft.com/beta/*",
"https://graph.microsoft.us/v1.0/*",
"https://graph.microsoft.us/beta/*",
"https://dod-graph.microsoft.us/v1.0/*",
"https://dod-graph.microsoft.us/beta/*",
"https://microsoftgraph.chinacloudapi.cn/v1.0/*",
"https://microsoftgraph.chinacloudapi.cn/beta/*",
"!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
"https://*.sharepoint.*/*_api/*",
"https://*.sharepoint.*/*_vti_bin/*",
"https://*.sharepoint-df.*/*_api/*",
"https://*.sharepoint-df.*/*_vti_bin/*"
]
}
Внимание
Добавьте RetryAfterPlugin перед GraphRandomErrorPlugin в вашем файле конфигурации. Если вы добавите его позже, запрос будет отклонен GraphRandomErrorPlugin прежде чем RetryAfterPlugin сможет обработать его.
Затем настройте GraphRandomErrorPlugin для имитации ошибок ограничения скорости.
Файл:devproxyrc.json (полная конфигурация)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
},
{
"name": "GraphRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "graphRandomErrorPlugin"
}
],
"urlsToWatch": [
"https://graph.microsoft.com/v1.0/*",
"https://graph.microsoft.com/beta/*",
"https://graph.microsoft.us/v1.0/*",
"https://graph.microsoft.us/beta/*",
"https://dod-graph.microsoft.us/v1.0/*",
"https://dod-graph.microsoft.us/beta/*",
"https://microsoftgraph.chinacloudapi.cn/v1.0/*",
"https://microsoftgraph.chinacloudapi.cn/beta/*",
"!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
"https://*.sharepoint.*/*_api/*",
"https://*.sharepoint.*/*_vti_bin/*",
"https://*.sharepoint-df.*/*_api/*",
"https://*.sharepoint-df.*/*_vti_bin/*"
],
"graphRandomErrorPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/graphrandomerrorplugin.schema.json",
"allowedErrors": [ 429 ]
}
}
Запустите Dev Proxy с вашим файлом конфигурации и протестируйте приложение, чтобы узнать, как оно обрабатывает ограничение скорости.
Если приложение отключается при регулировании, но не ожидает времени, указанного в запросах, отображается сообщение, аналогичное Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.
Это сообщение указывает, что ваше приложение неправильно обрабатывает ограничение и необоснованно его затягивает. Чтобы улучшить управление ограничением скорости в вашем приложении, обновите код так, чтобы он ждал время, указанное в заголовке Retry-After, прежде чем повторять запрос.
См. также
- GraphRandomErrorPlugin — полная ссылка
- RetryAfterPlugin — проверка поведения повторных попыток
- Что такое регулирование — основные понятия
- Как управлять ограничением скорости API — лучшие практики
- Глоссарий — терминология прокси для разработки