CrudApiPlugin
Simulerar ett CRUD-API med ett minnesinternt datalager. Skickar JSON-svar. Stöder CORS för användning mellan domäner från program på klientsidan. Du kan också simulera CRUD-API:er som skyddas med Microsoft Entra.
Definition av plugin-instans
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "customersApi"
}
Konfigurationsexempel
{
"customersApi": {
"apiFile": "customers-api.json"
}
}
Konfigurationsegenskaper
Egenskap | Beskrivning |
---|---|
apiFile |
Sökväg till filen som innehåller definitionen av CRUD-API:et |
Kommandoradsalternativ
Ingen
API-filexempel
Här följer flera exempel på API-filer som definierar ett CRUD-API för information om kunder.
Anonym CRUD API
Följande är ett exempel på en API-fil som definierar ett anonymt CRUD API för information om kunder.
{
"$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:et skyddas med Microsoft Entra med ett enda omfång
Följande är ett exempel på en API-fil som definierar ett CRUD-API för information om kunder som skyddas med Microsoft Entra. Alla åtgärder skyddas med ett omfång. CrudApiPlugin validerar tokenpubliken, utfärdaren och omfånget.
{
"$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:et skyddas med Microsoft Entra med hjälp av specifika omfång
Följande är ett exempel på en API-fil som definierar ett CRUD-API för information om kunder som skyddas med Microsoft Entra. Åtgärder skyddas med specifika omfång. CrudApiPlugin validerar tokenpubliken, utfärdaren och omfånget.
{
"$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"]
}
}
]
}
API-filegenskaper
Egenskap | Beskrivning | Krävs |
---|---|---|
actions |
Lista över åtgärder som API:et stöder. | Yes |
auth |
Avgör om API:et är skyddat eller inte. Tillåtna värden: none , entra . Standard none |
No |
baseUrl |
Bas-URL där Dev Proxy exponerar URL:en. Dev Proxy förbereder bas-URL:en till URL:er som du definierar i åtgärder. | Yes |
dataFile |
Sökväg till filen som innehåller data för API:et. | Yes |
entraAuthConfig |
Konfiguration för Microsoft Entra autentisering. | Ja, när du konfigurerar auth till entra |
Du kan referera till med hjälp av dataFile
en absolut eller en relativ sökväg. Dev Proxy löser relativa sökvägar relativt till API-definitionsfilen.
dataFile
Måste definiera en JSON-matris. Matrisen kan vara tom eller innehålla en inledande uppsättning objekt.
Egenskaper för EntraAuthConfig
När du konfigurerar auth
egenskapen till entra
måste du definiera entraAuthConfig
egenskapen . Om du inte definierar det visar CrudApiPlugin en varning och API:et är tillgängligt anonymt.
Du kan definiera entraAuthConfig
i API-filen och för varje API-åtgärd. När du definierar den i API-filen gäller den för alla åtgärder. När du definierar den för en åtgärd åsidosätter den API-filkonfigurationen för den här specifika åtgärden.
Egenskapen entraAuthConfig
har följande egenskaper.
Egenskap | Beskrivning | Krävs | Standardvärde |
---|---|---|---|
audience |
Ange den giltiga målgruppen för token. När det anges jämför CrudApiPlugin målgruppen från token med den här målgruppen. Om de är annorlunda returnerar CrudApiPlugin ett 401-otillåtet svar. | No | Ingen |
issuer |
Ange den giltiga token utfärdaren. När detta anges jämför CrudApiPlugin utfärdaren från token med den här utfärdaren. Om de är annorlunda returnerar CrudApiPlugin ett 401-otillåtet svar. | No | Ingen |
scopes |
Ange matrisen med giltiga omfång. När detta anges styr CrudApiPlugin om något av omfången finns på token. Om inget av omfången finns returnerar CrudApiPlugin ett 401-otillåtet svar. | No | Ingen |
roles |
Ange matrisen med giltiga roller. När detta anges styr CrudApiPlugin om någon av rollerna finns på token. Om ingen av rollerna finns returnerar CrudApiPlugin ett 401-otillåtet svar. | No | Ingen |
validateLifetime |
Ange till true för CrudApiPlugin för att verifiera om token inte har upphört att gälla. När CrudApiPlugin identifierar en token som har upphört att gälla returneras ett 401-otillåtet svar. |
No | false |
validateSigningKey |
Ange till true för CrudApiPlugin för att verifiera om token är autentiserad. När CrudApiPlugin identifierar en token med en ogiltig signatur (till exempel eftersom du ändrade token manuellt) returneras ett 401-otillåtet svar. |
No | false |
Åtgärdsegenskaper
Varje åtgärd i actions
listan har följande egenskaper.
Egenskap | Beskrivning | Krävs | Standardvärde |
---|---|---|---|
action |
Definierar hur Dev Proxy interagerar med data. Möjliga värden: getAll , getOne , getMany , create , merge , update , delete . |
Yes | Ingen |
auth |
Avgör om åtgärden är skyddad eller inte. Tillåtna värden: none , entra . |
No | none |
entraAuthConfig |
Konfiguration för Microsoft Entra autentisering. | Ja, när du konfigurerar auth till entra |
Ingen |
method |
HTTP-metod som Dev Proxy använder för att exponera åtgärden. | No | Beror på åtgärden |
query |
Newtonsoft JSONPath-fråga som Dev Proxy använder för att hitta data i datafilen. | No | Tom |
url |
URL där Dev Proxy exponerar åtgärden. Dev Proxy lägger till URL:en till bas-URL:en. | No | Tom |
Url:en som anges i url
egenskapen kan innehålla parametrar. Du definierar parametrar genom att omsluta parameternamnet i klammerparenteser, {customer-id}
till exempel . Vid routning av begäran ersätter Dev Proxy parametern med värdet från begärande-URL:en.
Du kan använda samma parameter i frågan. Om du till exempel definierar url
som /customers/{customer-id}
och query
som $.[?(@.id == {customer-id})]
ersätter Dev Proxy parametern {customer-id}
i frågan med värdet från begärande-URL:en.
Viktigt
Dev Proxy implementerar JSONPath i query
egenskapen med newtonsoft.Json. Det finns vissa begränsningar för att använda det, till exempel att det bara stöder enkla citattecken. Innan du skickar ett problem måste du verifiera frågan.
När plugin-programmet inte kan hitta data i datafilen med hjälp av frågan returneras ett 404 Not Found
svar.
Varje åtgärdstyp har en STANDARD-HTTP-metod. Du kan åsidosätta standardinställningen genom att method
ange egenskapen . Åtgärdstypen get
har till exempel standardmetoden GET
. Om du vill använda POST
i stället anger du method
egenskapen som POST
.
Matrisen actions
definierade en samling åtgärder som du vill simulera. Du kan definiera flera åtgärder för samma HTTP-metod och åtgärdstyp. Du kan till exempel definiera två getOne
åtgärder, en som hämtar en kund efter deras ID och den andra med deras e-postadress. Se till att definiera unika URL:er för varje åtgärd.
Åtgärder
Dev Proxy stöder följande åtgärder för CRUD-API:er.
Åtgärd | Beskrivning | Standardmetod |
---|---|---|
getAll |
Returnerar alla objekt från datafilen. | GET |
getOne |
Returnerar ett enskilt objekt från datafilen. Misslyckas när frågan matchar flera objekt. | GET |
getMany |
Returnerar flera objekt från datafilen. Returnerar en tom matris om frågan inte matchar några objekt. | GET |
create |
Lägger till ett nytt objekt i datainsamlingen. | POST |
merge |
Sammanfogar data från begäran med data från datafilen. | PATCH |
update |
Ersätter data i datafilen med data från begäran. | PUT |
delete |
Tar bort objektet från datafilen. | DELETE |
När du skapar ett nytt objekt med hjälp av en create
åtgärd validerar plugin-programmet inte dess form och lägger till det i datainsamlingen som det är.
Exempel på datafil
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]