Delen via


Testen of mijn toepassing bandbreedtebeperking goed verwerkt

Het testen van beperking is moeilijk omdat dit zelden gebeurt, alleen wanneer de server die als host fungeert voor de API zwaar wordt belast. Met behulp van de dev-proxy kunt u beperking voor elke API simuleren en controleren of uw toepassing deze correct verwerkt.

Gebruik de GenericRandomErrorPlugin om beperking op een API te simuleren. Als de API die u gebruikt, een Retry-After header retourneert, gebruikt u RetryAfterPlugin om te controleren of uw app wordt teruggezet volgens de instructies van de API.

Beperking simuleren op elke API

Als u wilt beginnen, schakelt u het GenericRandomErrorPlugin in uw Dev Proxy-configuratiebestand in.

{
  "$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/*"
      ]
    }
  ]
}

Configureer vervolgens de invoegtoepassing voor het gebruik van een bestand dat de fouten bevat die u wilt simuleren.

{
  "$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"
  }
}

Definieer in het foutenbestand het beperkingsantwoord zodat deze overeenkomt met het werkelijke beperkingsantwoord van uw API:

{
  "$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"
          }
        }
      ]
    }
  ]
}

Start Dev Proxy met uw configuratiebestand en test uw app om te zien hoe de beperking wordt verwerkt.

De juiste back-up testen met de Retry-After koptekst

Veel API's gebruiken de Retry-After antwoordheader om de app te instrueren om gedurende een bepaalde tijd een back-off uit te voeren. Wanneer u beperkingen simuleert met behulp van Dev Proxy, kunt u de Retry-After header configureren op een statische waarde of een dynamische waarde gebruiken die test als uw app wacht zoals aangegeven voordat u de API opnieuw aanroept.

Als u de Retry-After header wilt configureren voor een statische waarde, voegt u de header toe aan uw beperkingsreactie:

{
  "$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 dit voorbeeld is de Retry-After header ingesteld op 60 seconden. Wanneer u de header configureert voor een statische waarde, wordt dev proxy niet bepaald of uw app wacht voordat de API opnieuw wordt aangeroepen.

Als u wilt testen of uw app correct wacht voordat u de API opnieuw aanroept, wijzigt u de waarde van de header 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"
          }
        }
      ]
    }
  ]
}

Breid bovendien uw Dev Proxy-configuratie uit met de 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"
  }
}

Let op

Voeg de voorvoeging RetryAfterPlugin toe aan het GenericRandomErrorPlugin configuratiebestand. Als u deze later toevoegt, wordt de aanvraag mislukt door de GenericRandomErrorPlugin voordat de RetryAfterPlugin aanvraag kan worden verwerkt.

Deze invoegtoepassing houdt de beperkingsreacties bij en mislukte aanvragen die zijn uitgegeven aan API's die nog steeds worden beperkt.

Meer informatie