Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
CRUD API szimulálása memórián belüli adattárral. JSON-válaszokat küld. Támogatja a CORS-t az ügyféloldali alkalmazások tartományközi használatához. Opcionálisan a CRUD API-kat szimulálja, amelyeket a Microsoft Entra biztosít.
Beépülő modulpéldány definíciója
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "customersApi"
}
Példa konfigurációra
{
"customersApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.schema.json",
"apiFile": "customers-api.json"
}
}
Konfigurációs tulajdonságok
| Ingatlan | Leírás |
|---|---|
apiFile |
A CRUD API definícióját tartalmazó fájl elérési útja |
Parancssori beállítások
Egyik sem
PÉLDA API-fájlra
Az alábbiakban számos olyan API-fájlt mutatunk be, amelyek crud API-t definiálnak az ügyfelekkel kapcsolatos információkhoz.
Névtelen CRUD API
Az alábbiakban egy olyan API-fájlt mutatunk be, amely egy névtelen CRUD API-t határoz meg az ügyfelekkel kapcsolatos információkhoz.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.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 a Microsoft Entra-val egyetlen hatókör használatával biztosítva
Az alábbi példa egy OLYAN API-fájlra mutat be, amely egy CRUD API-t határoz meg a Microsoft Entra által védett ügyfelekkel kapcsolatos információkhoz. Minden művelet egyetlen hatókörrel van védve. A CrudApiPlugin ellenőrzi a jogkivonat célközönségét, a kiállítót és a hatókört.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.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})]"
}
]
}
A CRUD API-t a Microsoft Entra védi meghatározott hatókörök használatával
Az alábbi példa egy OLYAN API-fájlra mutat be, amely egy CRUD API-t határoz meg a Microsoft Entra által védett ügyfelekkel kapcsolatos információkhoz. A műveletek meghatározott hatókörökkel vannak védve. A CrudApiPlugin ellenőrzi a jogkivonat célközönségét, a kiállítót és a hatókört.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.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-fájl tulajdonságai
| Ingatlan | Leírás | Szükséges |
|---|---|---|
actions |
Az API által támogatott műveletek listája. | Igen |
auth |
Meghatározza, hogy az API biztonságos-e vagy sem. Engedélyezett értékek: none, entra. Alapértelmezett none |
Nem |
baseUrl |
Alap URL-cím, ahol a Dev Proxy elérhetővé teszi az URL-címet. A Dev Proxy előre felerősi a műveletekben definiált URL-címek alap URL-címét. | Igen |
dataFile |
Az API adatait tartalmazó fájl elérési útja. | Igen |
entraAuthConfig |
A Microsoft Entra-hitelesítés konfigurálása. | Igen, ha auth konfigurálja entra |
A dataFile abszolút vagy relatív elérési úttal hivatkozhat. A fejlesztői proxy viszonylagos elérési utakat old fel az API-definíciós fájlhoz.
A dataFile JSON-tömböt kell definiálnia. A tömb lehet üres, vagy tartalmazhat egy kezdeti objektumkészletet.
EntraAuthConfig tulajdonságai
Ha a auth tulajdonságot entrakonfigurálja, meg kell határoznia a entraAuthConfig tulajdonságot. Ha nem definiálja, a CrudApiPlugin figyelmeztetést jelenít meg, és az API névtelenül érhető el.
Az API-fájlban és az egyes API-műveletekben definiálhat entraAuthConfig. Amikor definiálja az API-fájlban, az minden műveletre érvényes. Ha egy műveletben definiálja, az felülírja az adott művelet API-fájlkonfigurációját.
A entraAuthConfig tulajdonság a következő tulajdonságokkal rendelkezik.
| Ingatlan | Leírás | Szükséges | Alapértelmezett |
|---|---|---|---|
audience |
Adja meg a jogkivonat érvényes célközönségét. Ha meg van adva, a CrudApiPlugin összehasonlítja a jogkivonat célközönségét ezzel a célközönséggel. Ha eltérnek, a CrudApiPlugin 401 jogosulatlan választ ad vissza. | Nem | Egyik sem |
issuer |
Adja meg az érvényes jogkivonat-kiállítót. Ha meg van adva, a CrudApiPlugin összehasonlítja a jogkivonatból származó kiállítót ezzel a kiállítóval. Ha eltérnek, a CrudApiPlugin 401 jogosulatlan választ ad vissza. | Nem | Egyik sem |
scopes |
Adja meg az érvényes hatókörök tömbét. Ha meg van adva, a CrudApiPlugin szabályozza, hogy a hatókörök valamelyike szerepel-e a jogkivonaton. Ha egyik hatókör sem található, a CrudApiPlugin 401 jogosulatlan választ ad vissza. | Nem | Egyik sem |
roles |
Adja meg az érvényes szerepkörök tömbét. Ha meg van adva, a CrudApiPlugin szabályozza, hogy a jogkivonaton szerepel-e valamelyik szerepkör. Ha egyik szerepkör sem jelenik meg, a CrudApiPlugin 401 jogosulatlan választ ad vissza. | Nem | Egyik sem |
validateLifetime |
Állítsa a CrudApiPlugin true értékre annak ellenőrzéséhez, hogy a jogkivonat nem járt-e le. Amikor a CrudApiPlugin egy lejárt jogkivonatot észlel, 401 jogosulatlan választ ad vissza. |
Nem | false |
validateSigningKey |
Állítsa be a CrudApiPlugin true értékére annak ellenőrzéséhez, hogy a jogkivonat hiteles-e. Ha a CrudApiPlugin érvénytelen aláírású jogkivonatot észlel (például azért, mert manuálisan módosította a jogkivonatot), az 401 jogosulatlan választ ad vissza. |
Nem | false |
Művelet tulajdonságai
A actions listában minden művelet a következő tulajdonságokkal rendelkezik.
| Ingatlan | Leírás | Szükséges | Alapértelmezett |
|---|---|---|---|
action |
Meghatározza, hogy a Dev Proxy hogyan használja az adatokat. Lehetséges értékek: getAll, getOne, getMany, create, merge, update, delete. |
Igen | Egyik sem |
auth |
Meghatározza, hogy a művelet biztonságos-e vagy sem. Engedélyezett értékek: none, entra. |
Nem | none |
entraAuthConfig |
A Microsoft Entra-hitelesítés konfigurálása. | Igen, ha auth konfigurálja entra |
Egyik sem |
method |
A Dev Proxy által a művelet közzétételére használt HTTP-metódus. | Nem | A művelettől függ |
query |
A Newtonsoft JSONPath lekérdezést, amelyet a Dev Proxy az adatfájlban lévő adatok megkeresésére használ. | Nem | Üres |
url |
AZ URL-cím, amelyen a Dev Proxy közzéteszi a műveletet. A Dev Proxy hozzáfűzi az URL-címet az alap URL-címhez. | Nem | Üres |
A url tulajdonságban megadott URL-cím tartalmazhat paramétereket. A paramétereket úgy határozhatja meg, hogy a paraméter nevét kapcsos zárójelekbe burkolja, például {customer-id}. A kérés átirányításakor a Dev Proxy lecseréli a paramétert a kérelem URL-címéből származó értékre.
Ugyanezt a paramétert használhatja a lekérdezésben. Ha például a url/customers/{customer-id}, a query pedig $.[?(@.id == {customer-id})], a Dev Proxy a lekérdezés {customer-id} paraméterét a kérelem URL-címéből származó értékre cseréli.
Fontos
A Dev Proxy a JSONPathot implementálja a query tulajdonságban a Newtonsoft.Json használatával. Van néhány korlátozás a használatára, például csak az egyszeri idézőjeleket támogatja. A probléma elküldése előtt ellenőrizze a lekérdezést.
Ha a beépülő modul nem találja az adatokat az adatfájlban a lekérdezés használatával, 404 Not Found választ ad vissza.
Minden művelettípushoz tartozik egy alapértelmezett HTTP-metódus. Az alapértelmezett érték felülbírálható a method tulajdonság megadásával. A get művelettípus például egy alapértelmezett GETmetódussal rendelkezik. Ha inkább POST szeretne használni, adja meg a method tulajdonságot POST.
A actions tömb olyan műveletek gyűjteményét definiálta, amelyeket ki szeretne másolni. Ugyanahhoz a HTTP-metódushoz és művelettípushoz több műveletet is definiálhat. Definiálhat például két getOne műveletet, az egyik egy ügyfelet az azonosítójuk, a másikat pedig az e-mail-címük alapján kér le. Ügyeljen arra, hogy minden művelethez egyedi URL-címeket adjon meg.
Műveletek
A Dev Proxy a következő műveleteket támogatja CRUD API-k esetében.
| Akció | Leírás | Alapértelmezett metódus |
|---|---|---|
getAll |
Az adatfájl összes elemét adja vissza. | GET |
getOne |
Egyetlen elemet ad vissza az adatfájlból. Sikertelen, ha a lekérdezés több elemnek felel meg. | GET |
getMany |
Több elemet ad vissza az adatfájlból. Üres tömböt ad vissza, ha a lekérdezés nem egyezik meg egyetlen elemével sem. | GET |
create |
Új elemet ad hozzá az adatgyűjtéshez. | POST |
merge |
Egyesíti a kérelem adatait az adatfájlból származó adatokkal. | PATCH |
update |
Az adatfájlban lévő adatokat lecseréli a kérésből származó adatokra. | PUT |
delete |
Törli az elemet az adatfájlból. | DELETE |
Amikor új elemet hoz létre egy create művelet használatával, a beépülő modul nem ellenőrzi annak alakját, és hozzáadja azt az adatgyűjtési as-is.
Példa adatfájlra
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]