Megosztás a következőn keresztül:


CRUDApiPlugin

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.

PARANCSSOR KÉPERNYŐKÉPE CRUD API szimulálásával a Dev Proxyval.

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

Következő lépés