Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na pierwszy rzut oka
Celem: Testowanie, jak Twoja aplikacja radzi sobie z ograniczeniami interfejsu API platformy Microsoft 365
Czas: 10 minut
Plugins:GraphRandomErrorPlugin, RetryAfterPlugin
Wymagania wstępne:konfigurowanie serwera proxy deweloperskiego
Zazwyczaj testowanie ograniczania przepustowości jest trudne, ponieważ występuje rzadko, gdy serwery platformy Microsoft 365 są obciążone dużym obciążeniem. Korzystając z serwera proxy deweloperskiego, można symulować odpowiedzi ograniczania przepustowości i sprawdzić, czy aplikacja obsługuje ją poprawnie.
Aby symulować ograniczanie przepustowości w interfejsach API platformy Microsoft 365, użyj narzędzia GraphRandomErrorPlugin i polecenia RetryAfterPlugin. Funkcja GraphRandomErrorPlugin zwraca odpowiedzi ograniczania przepustowości dla interfejsów API platformy Microsoft 365. Narzędzie RetryAfterPlugin sprawdza, czy aplikacja zmniejsza aktywność zgodnie z instrukcjami interfejsu API.
Aby rozpocząć, włącz GraphRandomErrorPlugin i RetryAfterPlugin w pliku konfiguracji deweloperskiego serwera proxy.
Plik:devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.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/*"
]
}
Uwaga
Dodaj element RetryAfterPlugin przed elementem GraphRandomErrorPlugin w pliku konfiguracji. Jeśli dodasz go później, GraphRandomErrorPlugin spowoduje niepowodzenie żądania, zanim RetryAfterPlugin będzie miało szansę go obsłużyć.
Następnie skonfiguruj element GraphRandomErrorPlugin, aby symulować błędy dławienia.
Plik:devproxyrc.json (ukończ konfigurację)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.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": {
"allowedErrors": [ 429 ]
}
}
Rozpocznij tworzenie serwera proxy przy użyciu pliku konfiguracji i przetestuj aplikację, aby zobaczyć, jak obsługuje ograniczanie przepustowości.
Jeśli Twoja aplikacja wycofuje się, gdy jest przydławiana, ale nie czeka przez czas określony w żądaniach, zobaczysz komunikat podobny do Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.
Ten komunikat wskazuje, że aplikacja nie obsługuje poprawnego ograniczania przepustowości i niepotrzebnie przedłuża ograniczanie przepustowości. Aby ulepszyć sposób obsługi ograniczania przepustowości przez aplikację, zaktualizuj kod, aby poczekać na czas określony w nagłówku Retry-After przed ponowieniu próby żądania.
Zobacz także
- GraphRandomErrorPlugin — pełna dokumentacja
- RetryAfterPlugin — weryfikowanie zachowania ponawiania prób
- Co to jest ograniczanie przepustowości — pojęcia
- Jak obsługiwać ograniczanie przepływności interfejsu API — najlepsze rozwiązania
- Słownik: terminologia Proxy deweloperskie