Simular limitação em APIs do Microsoft 365
Normalmente, o teste de limitação é difícil porque ocorre raramente, quando os servidores do Microsoft 365 estão sob carga pesada. Usando o Dev Proxy, você pode simular respostas de limitação e verificar se seu aplicativo lida com isso corretamente.
Para simular a limitação nas APIs do Microsoft 365, use o GraphRandomErrorPlugin e o RetryAfterPlugin. O GraphRandomErrorPlugin
retorna respostas de limitação para APIs do Microsoft 365. O RetryAfterPlugin
verifica se o aplicativo recua conforme instruído pela API.
Para começar, habilite o GraphRandomErrorPlugin
e RetryAfterPlugin
no arquivo de configuração do Dev Proxy.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
},
{
"name": "GraphRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-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/*"
]
}
Cuidado
Adicione o RetryAfterPlugin
antes do GraphRandomErrorPlugin
em seu arquivo de configuração. Se você adicioná-lo depois, a solicitação será falhada GraphRandomErrorPlugin
pelo antes que ele RetryAfterPlugin
tenha a chance de tratá-la.
Em seguida, configure o GraphRandomErrorPlugin
para simular erros de limitação.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
},
{
"name": "GraphRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-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 ]
}
}
Inicie o Dev Proxy com seu arquivo de configuração e teste seu aplicativo para ver como ele lida com a limitação.
Se o aplicativo recuar quando limitado, mas não aguardar o tempo especificado nas solicitações, você verá uma mensagem semelhante a Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled
.
Essa mensagem indica que seu aplicativo não está lidando com a limitação corretamente e prolonga desnecessariamente a limitação. Para melhorar a forma como seu aplicativo lida com a limitação, atualize seu código para aguardar o tempo especificado no Retry-After
cabeçalho antes de repetir a solicitação.