Een CRUD-API simuleren die is beveiligd met een API-sleutel

In één oogopslag
Doel: CRUD-API simuleren met API-sleutelverificatie
Tijd: 10 minuten
Invoegtoepassingen:CrudApiPlugin
Vereisten:Dev Proxy instellen

Bij het bouwen van apps werkt u vaak met back-end-API's. Soms zijn deze API's nog niet beschikbaar, of andere teams werken ze bij om te voldoen aan de nieuwste vereisten. Om te voorkomen dat u wacht, maakt u doorgaans een mock-API die de gegevens retourneert die u nodig hebt. Hoewel deze methode u deblokkert, moet u tijd besteden aan het bouwen van een API die u uiteindelijk vervangt door de echte. Het wordt nog ingewikkelder wanneer u uw API wilt beveiligen met een API-sleutel. Om te voorkomen dat u tijd verspilt, kunt u Dev Proxy gebruiken om een CRUD-API te simuleren en de ontwikkeling te versnellen.

Met behulp van de CrudApiPluginAPI kunt u een CRUD-API (Maken, Lezen, Bijwerken, Verwijderen) simuleren met een gegevensarchief in het geheugen. Met behulp van een eenvoudig configuratiebestand kunt u definiëren welke URL's uw mock-API ondersteunt en welke gegevens worden geretourneerd. De invoegtoepassing biedt ook ondersteuning voor CORS voor gebruik tussen domeinen vanuit toepassingen aan de clientzijde. De invoegtoepassing biedt ook ondersteuning voor API-sleutelverificatie, zodat u uw mock-API kunt beveiligen met een API-sleutel en kunt testen of uw app de sleutel correct verzendt.

Scenario

Stel dat u een app bouwt waarmee gebruikers klanten kunnen beheren. Als u de gegevens wilt ophalen, moet u het /customers eindpunt van de back-end-API aanroepen. De API wordt beveiligd met een API-sleutel. Om te voorkomen dat het back-endteam wacht totdat het werk is voltooid, besluit u Dev Proxy te gebruiken om de API te simuleren en de benodigde gegevens te retourneren.

Voordat u begint

U begint met het maken van een gesimuleerde CRUD-API met klantgegevens. Nadat u hebt bevestigd dat de API werkt, kunt u deze beveiligen met een API-sleutel.

Voorbeeld 1: Een CRUD-API simuleren die is beveiligd met een API-sleutel in een header

In het eerste voorbeeld beveiligt u de hele API met een API-sleutel die clients verzenden in een HTTP-header.

Voeg in het customers-api.json bestand informatie toe over VERIFICATIE van API-sleutels.

Bestand:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "headerName": "X-API-Key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

Door de eigenschap auth in te stellen op apiKey, geeft u aan dat de API is beveiligd met een API-sleutel. In de apiKeyAuthConfig eigenschap geeft u de configuratiegegevens op. De apiKey eigenschap geeft de geldige API-sleutel op en de headerName eigenschap geeft de HTTP-header op waar de invoegtoepassing naar de sleutel zoekt.

Als u de API probeert aan te roepen zonder dat de X-API-Key header is ingesteld my-secret-key, krijgt u een 401 Unauthorized antwoord.

Voorbeeld 2: Een CRUD-API simuleren die is beveiligd met een API-sleutel in een queryparameter

In sommige API's verzenden clients de API-sleutel als een querytekenreeksparameter. U kunt dit gedrag simuleren door de queryParameterName eigenschap te configureren.

Werk het customers-api.json bestand als volgt bij:

Bestand:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "queryParameterName": "api_key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

In dit voorbeeld zoekt de invoegtoepassing naar de API-sleutel in de api_key querytekenreeksparameter. Zo lukt het aanroepen van https://api.contoso.com/v1/customers?api_key=my-secret-key bijvoorbeeld, terwijl het aanroepen van https://api.contoso.com/v1/customers een 401 Unauthorized-antwoord teruggeeft.

Voorbeeld 3: Een CRUD-API simuleren die een API-sleutel accepteert van zowel header- als queryparameter

U kunt de invoegtoepassing ook configureren om de API-sleutel te accepteren vanuit zowel een header als een queryparameter. De invoegtoepassing controleert eerst de header. Als de header de API-sleutel niet bevat, controleert de invoegtoepassing de queryparameter.

Werk het customers-api.json bestand als volgt bij:

Bestand:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "headerName": "X-API-Key",
    "queryParameterName": "api_key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

In dit voorbeeld is een aanvraag met de API-sleutel in de X-API-Key header of de api_key queryparameter geautoriseerd.

Volgende stap

Meer informatie over de CrudApiPlugin.

Samples

Zie ook de gerelateerde Dev Proxy-voorbeelden: