Sdílet prostřednictvím


Otestujte, že aplikace správně zpracovává omezování

Testování omezování je obtížné, protože k němu dochází zřídka, pouze pokud je server hostující rozhraní API zatížený velkým zatížením. Pomocí dev proxy serveru můžete simulovat omezování libovolného rozhraní API a zkontrolovat, jestli ji vaše aplikace zpracovává správně.

K simulaci omezování u libovolného rozhraní API použijte GenericRandomErrorPlugin. Pokud rozhraní API, které používáte, vrátí hlavičku Retry-After , pomocí retryAfterPlugin ověřte, že se vaše aplikace znovu vypne podle pokynů rozhraní API.

Simulace omezování v libovolném rozhraní API

Začněte tím, že povolíte GenericRandomErrorPlugin konfigurační soubor dev proxy serveru.

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

Dále nakonfigurujte modul plug-in tak, aby používal soubor obsahující chyby, které chcete simulovat.

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

V souboru chyb definujte odpověď omezení tak, aby odpovídala skutečné odpovědi na omezování vašeho rozhraní 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"
          }
        }
      ]
    }
  ]
}

Spusťte dev Proxy s konfiguračním souborem a otestujte aplikaci, abyste viděli, jak zpracovává omezování.

Otestování správného zasunutí pomocí hlavičky Retry-After

Mnoho rozhraní API používá hlavičku Retry-After odpovědi k pokynu aplikaci, aby se po určitou dobu vrátila zpět. Při simulaci odpovědí na omezování pomocí dev proxy serveru můžete buď nakonfigurovat hlavičku Retry-After na statickou hodnotu, nebo použít dynamickou hodnotu, která testuje, jestli aplikace čeká podle pokynů před opětovným voláním rozhraní API.

Pokud chcete záhlaví nakonfigurovat Retry-After na statickou hodnotu, přidejte hlavičku do odpovědi na omezování:

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

V tomto příkladu je hlavička Retry-After nastavená na 60 sekund. Když nakonfigurujete hlavičku na statickou hodnotu, Dev Proxy nekontroluje, jestli vaše aplikace čeká před opětovným voláním rozhraní API.

Pokud chcete otestovat, jestli aplikace správně čeká před opětovnou voláním rozhraní API, změňte hodnotu hlavičky na @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"
          }
        }
      ]
    }
  ]
}

Kromě toho rozšiřte konfiguraci vývojového proxy serveru pomocí nástroje 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"
  }
}

Upozornění

Přidejte před RetryAfterPlugin konfigurační GenericRandomErrorPlugin soubor. Pokud ho přidáte později, požadavek se nezdaří GenericRandomErrorPlugin předtím RetryAfterPlugin , než bude mít možnost ji zpracovat.

Tento modul plug-in sleduje odpovědi na omezování a vynucuje neúspěšné požadavky vydané pro rozhraní API, která jsou stále omezena.

Více informací