Delen via


CrudApiPlugin

Simuleert een CRUD-API met een gegevensarchief in het geheugen. Hiermee worden JSON-antwoorden verzonden. Ondersteunt CORS voor gebruik tussen domeinen van toepassingen aan de clientzijde. Optioneel worden CRUD-API's gesimuleerd die zijn beveiligd met Microsoft Entra.

Schermopname van een opdrachtprompt met Dev Proxy die een CRUD-API simuleert.

Definitie van invoegtoepassingsexemplaren

{
  "name": "CrudApiPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "customersApi"
}

Configuratievoorbeeld

{
  "customersApi": {
    "apiFile": "customers-api.json"
  }
}

Configuratie-eigenschappen

Eigenschap Beschrijving
apiFile Pad naar het bestand dat de definitie van de CRUD-API bevat

Opdrachtregelopties

Geen

Voorbeeld van API-bestand

Hieronder volgen enkele voorbeelden van API-bestanden die een CRUD-API definiëren voor informatie over klanten.

Anonieme CRUD-API

Hieronder volgt een voorbeeld van een API-bestand dat een anonieme CRUD-API definieert voor informatie over klanten.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "update",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

CRUD API beveiligd met Microsoft Entra met één bereik

Hieronder volgt een voorbeeld van een API-bestand dat een CRUD-API definieert voor informatie over klanten die zijn beveiligd met Microsoft Entra. Alle acties worden beveiligd met één bereik. CrudApiPlugin valideert de tokendoelgroep, verlener en het bereik.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "entra",
  "entraAuthConfig": {
    "audience": "https://api.contoso.com",
    "issuer": "https://login.microsoftonline.com/contoso.com",
    "scopes": ["api://contoso.com/user_impersonation"]
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "update",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

CRUD API beveiligd met Microsoft Entra met behulp van specifieke bereiken

Hieronder volgt een voorbeeld van een API-bestand dat een CRUD-API definieert voor informatie over klanten die zijn beveiligd met Microsoft Entra. Acties worden beveiligd met specifieke bereiken. CrudApiPlugin valideert de tokendoelgroep, verlener en het bereik.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "entra",
  "entraAuthConfig": {
    "audience": "https://api.contoso.com",
    "issuer": "https://login.microsoftonline.com/contoso.com"
  },
  "actions": [
    {
      "action": "getAll",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.read"]
      }
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.read"]
      }
    },
    {
      "action": "create",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.write"]
      }
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.write"]
      }
    },
    {
      "action": "update",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.write"]
      }
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]",
      "auth": "entra",
      "entraAuthConfig": {
        "scopes": ["api://contoso.com/customer.write"]
      }
    }
  ]
}

EIGENSCHAPPEN VAN API-bestand

Eigenschap Beschrijving Vereist
actions Lijst met acties die door de API worden ondersteund. Yes
auth Bepaalt of de API is beveiligd of niet. Toegestane waarden: none, entra. Standaard none No
baseUrl Basis-URL waar Dev Proxy de URL beschikbaar maakt. Dev Proxy maakt de basis-URL afhankelijk van URL's die u in acties definieert. Yes
dataFile Pad naar het bestand dat de gegevens voor de API bevat. Yes
entraAuthConfig Configuratie voor Microsoft Entra-verificatie. Ja, wanneer u configureert auth voor entra

U kunt verwijzen naar de dataFile met behulp van een absoluut- of een relatief pad. Dev Proxy zet relatieve paden om relatief ten opzichte van het API-definitiebestand.

De dataFile moet een JSON-matrix definiëren. De matrix kan leeg zijn of een eerste set objecten bevatten.

Eigenschappen van EntraAuthConfig

Wanneer u de auth eigenschap configureert naar entra, moet u de entraAuthConfig eigenschap definiëren. Als u deze niet definieert, geeft CrudApiPlugin een waarschuwing weer en is de API anoniem beschikbaar.

U kunt definiëren entraAuthConfig voor het API-bestand en voor elke API-actie. Wanneer u deze definieert in het API-bestand, is het van toepassing op alle acties. Wanneer u deze definieert voor een actie, wordt de configuratie van het API-bestand voor deze specifieke actie overschreven.

De entraAuthConfig eigenschap heeft de volgende eigenschappen.

Eigenschap Beschrijving Vereist Standaard
audience Geef de geldige doelgroep voor het token op. Wanneer dit is opgegeven, vergelijkt CrudApiPlugin de doelgroep van het token met deze doelgroep. Als ze verschillen, retourneert CrudApiPlugin een 401 Niet-geautoriseerd antwoord. No Geen
issuer Geef de geldige verlener van het token op. Wanneer dit is opgegeven, vergelijkt CrudApiPlugin de verlener van het token met deze verlener. Als ze verschillen, retourneert CrudApiPlugin een 401 Niet-geautoriseerd antwoord. No Geen
scopes Geef de matrix met geldige bereiken op. Wanneer dit is opgegeven, bepaalt CrudApiPlugin of een van de bereiken aanwezig is op het token. Als geen van de bereiken aanwezig is, retourneert CrudApiPlugin een 401 Niet-geautoriseerd antwoord. No Geen
roles Geef de matrix met geldige rollen op. Wanneer dit is opgegeven, bepaalt CrudApiPlugin of een van de rollen aanwezig is op het token. Als geen van de rollen aanwezig is, retourneert CrudApiPlugin een 401 Niet-geautoriseerd antwoord. No Geen
validateLifetime Stel in op true voor de CrudApiPlugin om te controleren of het token niet is verlopen. Wanneer CrudApiPlugin een verlopen token detecteert, retourneert het een 401 Niet-geautoriseerd antwoord. No false
validateSigningKey Stel in op true voor de CrudApiPlugin om te controleren of het token authentiek is. Wanneer CrudApiPlugin een token met een ongeldige handtekening detecteert (bijvoorbeeld omdat u het token handmatig hebt gewijzigd), retourneert het een 401 Niet-geautoriseerd antwoord. No false

Actie-eigenschappen

Elke actie in de actions lijst heeft de volgende eigenschappen.

Eigenschap Beschrijving Vereist Standaard
action Definieert hoe Dev Proxy communiceert met de gegevens. Mogelijke waarden: getAll, getOne, getMany, create, merge, update, , delete. Yes Geen
auth Bepaalt of de actie is beveiligd of niet. Toegestane waarden: none, entra. No none
entraAuthConfig Configuratie voor Microsoft Entra-verificatie. Ja, wanneer u configureert auth om entra Geen
method DE HTTP-methode die Dev Proxy gebruikt om de actie beschikbaar te maken. No Is afhankelijk van de actie
query Newtonsoft JSONPath-query die Dev Proxy gebruikt om de gegevens in het gegevensbestand te vinden. No Leeg
url URL waarop Dev Proxy de actie beschikbaar maakt. Dev Proxy voegt de URL toe aan de basis-URL. No Leeg

De URL die in de url eigenschap is opgegeven, kan parameters bevatten. U definieert parameters door de parameternaam tussen accolades te verpakken, {customer-id}bijvoorbeeld . Bij het routeren van de aanvraag vervangt Dev Proxy de parameter door de waarde van de aanvraag-URL.

U kunt dezelfde parameter gebruiken in de query. Als u bijvoorbeeld de url als /customers/{customer-id} en de query als $.[?(@.id == {customer-id})]definieert, vervangt Dev Proxy de {customer-id} parameter in de query door de waarde van de aanvraag-URL.

Belangrijk

Dev Proxy implementeert JSONPath in de query eigenschap met behulp van Newtonsoft.Json. Er gelden enkele beperkingen voor het gebruik ervan, zoals dat het alleen enkele aanhalingstekens ondersteunt. Voordat u een probleem indient, moet u uw query valideren.

Wanneer de invoegtoepassing de gegevens in het gegevensbestand niet kan vinden met behulp van de query, wordt er een 404 Not Found antwoord geretourneerd.

Elk actietype heeft een standaard-HTTP-methode. U kunt de standaardinstelling overschrijven door de method eigenschap op te geven. Het actietype heeft bijvoorbeeld get een standaardmethode van GET. Als u in plaats daarvan wilt gebruiken POST , geeft u de method eigenschap op als POST.

De actions matrix definieert een verzameling acties die u wilt nabootsen. U kunt meerdere acties definiëren voor dezelfde HTTP-methode en hetzelfde actietype. U kunt bijvoorbeeld twee getOne acties definiëren, één waarmee een klant wordt opgehaald op basis van de id en de andere op basis van het e-mailadres. Zorg ervoor dat u unieke URL's voor elke actie definieert.

Acties

Dev Proxy ondersteunt de volgende acties voor CRUD API's.

Actie Beschrijving Standaardmethode
getAll Retourneert alle items uit het gegevensbestand. GET
getOne Retourneert één item uit het gegevensbestand. Mislukt wanneer de query overeenkomt met meerdere items. GET
getMany Retourneert meerdere items uit het gegevensbestand. Retourneert een lege matrix als de query niet overeenkomt met items. GET
create Hiermee voegt u een nieuw item toe aan de gegevensverzameling. POST
merge Hiermee worden de gegevens van de aanvraag samengevoegd met de gegevens uit het gegevensbestand. PATCH
update Vervangt de gegevens in het gegevensbestand door de gegevens van de aanvraag. PUT
delete Hiermee verwijdert u het item uit het gegevensbestand. DELETE

Wanneer u een nieuw item maakt met behulp van een create actie, wordt de vorm van de invoegtoepassing niet gevalideerd en wordt deze toegevoegd aan de gegevensverzameling.

Voorbeeld van gegevensbestand

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]