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.
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"
}
]