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 když je server hostující rozhraní API pod velkým zatížením. Pomocí vývojového proxy serveru můžete simulovat omezování v libovolném rozhraní API a zkontrolovat, jestli ho vaše aplikace zpracovává správně.

Pokud chcete simulovat omezování v libovolném rozhraní API, použijte GenericRandomErrorPlugin. Pokud rozhraní API, které používáte, vrátí hlavičku Retry-After , pomocí rutiny RetryAfterPlugin ověřte, že se aplikace vrátí zpět podle pokynů rozhraní API.

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

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

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/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.14.1/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ěď na 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.14.1/genericrandomerrorplugin.schema.json",
  "responses": [
    {
      "statusCode": 429,
      "headers": [
        {
          "name": "Content-Type",
          "value": "application/json"
        }
      ],
      "body": {
        "code": "TooManyRequests",
        "message": "Too many requests"
      }
    }
  ]
}

Spusťte proxy vývoj pomocí konfiguračního souboru a otestujte aplikaci, abyste zjistili, jak zvládá omezování.

Otestujte správné zásady pomocí hlavičky.Retry-After

Mnoho rozhraní API používá hlavičku Retry-After odpovědi k pokynu aplikaci, aby na určitou dobu couvla. Při simulaci odpovědí na omezování pomocí vývojového Retry-After proxy serveru můžete buď nakonfigurovat statickou hodnotu v hlavičce, nebo použít dynamickou hodnotu, která podle pokynů před opětovným voláním rozhraní API otestuje, jestli vaše aplikace čeká.

Pokud chcete nakonfigurovat hlavičku Retry-After na statickou hodnotu, přidejte ji do odpovědi na omezení:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
  "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 vaše aplikace před dalším voláním rozhraní API správně čeká, změňte hodnotu hlavičky na @dynamic:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
  "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 RetryAfterPluginproxy serveru pomocí .

{
  "$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",
      "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í

Do konfiguračního RetryAfterPluginGenericRandomErrorPlugin souboru přidejte před . Pokud ho přidáte za, požadavek se nezdaří, GenericRandomErrorPlugin než RetryAfterPlugin bude mít možnost ho zpracovat.

Tento modul plug-in sleduje omezování odpovědí a vynuceně selhávají požadavky vydané rozhraním API, které jsou stále omezené.

Další informace