Testen, dass meine Anwendung die Drosselung ordnungsgemäß behandelt
Das Testen der Drosselung ist schwierig, da sie nur selten auftritt, wenn der Server, auf dem die API gehostet wird, stark belastet wird. 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 " RetryAfterPlugin ", um zu überprüfen, ob Ihre App wie von der API angewiesen zurückgibt.
Simulieren der Drosselung für eine beliebige API
Aktivieren Sie zunächst die GenericRandomErrorPlugin
In ihrer Dev Proxy-Konfigurationsdatei.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-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.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"errorsFile": "errors-contoso-api.json"
}
}
Definieren Sie in der Fehlerdatei die Drosselungsantwort so, dass sie der tatsächlichen Einschränkungsantwort Ihrer API entspricht:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.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 die Drosselung behandelt wird.
Testen der korrekten Sicherung mit der Retry-After
Kopfzeile
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 Retry-After
Header auf einen statischen Wert zu konfigurieren, fügen Sie der Einschränkungsantwort den Header hinzu:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.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
:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.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
.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"urlsToWatch": [
"https://api.contoso.com/*"
]
},
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"errorsFile": "errors-contoso-api.json"
}
}
Achtung
Fügen Sie die vor der RetryAfterPlugin
GenericRandomErrorPlugin
Konfigurationsdatei hinzu. Wenn Sie sie nachher hinzufügen, schlägt die Anforderung fehl, bevor GenericRandomErrorPlugin
die RetryAfterPlugin
Möglichkeit besteht, sie zu behandeln.
Dieses Plug-In verfolgt die Drosselung von Antworten und schlägt erzwungene Anforderungen fehl, die an APIs ausgegeben wurden, die noch gedrosselt werden.