Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tip
Neu beim Drosseln? Erfahren Sie was Throttling ist und wie Sie damit umgehen.
Auf einen Blick
Ziel: Testen, wie Ihre App die API-Drosselung für eine beliebige API behandelt
Zeit: 15 Minuten
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Voraussetzungen:Einrichten des Dev-Proxys
Das Testen der Drosselung ist schwierig, da es nur selten dazu kommt, nämlich nur dann, wenn der Server, auf dem die API gehostet wird, stark ausgelastet ist. Mithilfe des Dev-Proxys können Sie die Drosselung für eine beliebige API simulieren und überprüfen, ob die Anwendung sie richtig behandelt.
Verwenden Sie zum Simulieren der Drosselung für eine beliebige API das GenericRandomErrorPlugin. Wenn die von Ihnen verwendete API einen Retry-After-Header zurückgibt, verwenden Sie das RetryAfterPlugin, um zu überprüfen, ob Ihre App wie von der API angewiesen wartet.
Drosselung für jede API simulieren
Aktivieren Sie zunächst die GenericRandomErrorPlugin In ihrer Dev Proxy-Konfigurationsdatei.
Datei: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
]
}
Konfigurieren Sie als Nächstes das Plug-In, um eine Datei zu verwenden, die die Fehler enthält, die Sie simulieren möchten.
Datei: devproxyrc.json (mit ErrorsFile-Konfiguration)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors-contoso-api.json"
}
}
Definieren Sie in der Fehlerdatei die Antwort bei Drosselung so, dass sie der tatsächlichen Antwort bei Drosselung Ihrer API entspricht:
Datei: errors-contoso-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
]
}
Starten Sie Dev Proxy mit Ihrer Konfigurationsdatei und testen Sie Ihre App, um zu sehen, wie sie mit Drosselung umgeht.
Testen Sie das korrekte Zurückweichen mit der Kopfzeile Retry-After
Viele APIs verwenden den Retry-After Antwortheader, um die App für einen bestimmten Zeitraum zurückzuschalten. Beim Simulieren von Drosselungsantworten mithilfe von Dev Proxy können Sie entweder den Retry-After Header auf einen statischen Wert konfigurieren oder einen dynamischen Wert verwenden, der testet, wenn Ihre App wie angegeben wartet, bevor Sie die API erneut aufrufen.
Um den Header Retry-After auf einen festen Wert festzulegen, fügen Sie den Header Ihrer Throttling-Antwort hinzu:
Datei: errors-contoso-api.json (mit statischem Retry-After)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
]
}
In diesem Beispiel wird die Retry-After Kopfzeile auf 60 Sekunden festgelegt. Wenn Sie den Header auf einen statischen Wert konfigurieren, steuert Dev Proxy nicht, ob Ihre App wartet, bevor Sie die API erneut aufrufen.
Um zu testen, ob Ihre App ordnungsgemäß wartet, bevor Sie die API erneut aufrufen, ändern Sie den Wert des Headers in @dynamic:
Datei: errors-contoso-api.json (mit dynamischem Retry-After)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "@dynamic"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
]
}
Erweitern Sie außerdem Ihre Dev Proxy-Konfiguration mit dem RetryAfterPlugin.
Datei: devproxyrc.json (vollständig mit RetryAfterPlugin)
{
"$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",
"urlsToWatch": [
"https://api.contoso.com/*"
]
},
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors-contoso-api.json"
}
}
Achtung
Fügen Sie das RetryAfterPlugin vor dem GenericRandomErrorPlugin in Ihrer Konfigurationsdatei hinzu. Wenn Sie sie erst danach hinzufügen, wird die Anfrage von GenericRandomErrorPlugin abgewiesen, bevor RetryAfterPlugin Gelegenheit hat, sie zu verarbeiten.
Dieses Plug-in erfasst Antworten, die auf eine Drosselung hinweisen, und lässt Anfragen an APIs, für die noch eine Drosselung gilt, gezielt fehlschlagen.
Weitere Informationen
Siehe auch
- GenericRandomErrorPlugin - Vollständige Referenz
- RetryAfterPlugin – Überprüfen des Wiederholungsverhaltens
- Simulieren der Drosselung auf Microsoft 365-APIs – Microsoft 365-spezifisch
- Simulieren Rate-Limit API-Antworten – bezogene Resilienztests
- Verwenden von Dev Proxy in CI/CD – Automatisieren von Resilienztests in Ihrer Pipeline
- Glossar - Dev Proxy-Terminologie