API-kulccsal védett CRUD API szimulálása

Egy pillantással
Cél: CRUD API szimulálása API-kulcsok hitelesítésével
Idő: 10 perc
Beépülő modulok:CrudApiPlugin
Előfeltételek:Fejlesztői proxy beállítása

Alkalmazások létrehozásakor gyakran használ háttér API-kat. Előfordulhat, hogy ezek az API-k még nem érhetők el, vagy más csapatok frissítik őket, hogy megfeleljenek a legújabb követelményeknek. A várakozás elkerülése érdekében általában egy szimulált API-t hoz létre, amely visszaadja a szükséges adatokat. Bár ez a megközelítés feloldja az akadályt, időt kell szánnia olyan API létrehozására, amelyet végül lecserél a valódira. Még bonyolultabb lesz, ha API-kulccsal kell biztonságossá tenni az API-t. A felesleges idő elkerülése érdekében a Dev Proxy használatával szimulálhatja a CRUD API-t, és felgyorsíthatja a fejlesztést.

CrudApiPluginA crud (létrehozás, olvasás, frissítés, törlés) API-t szimulálhatja egy memóriabeli adattárral. Egy egyszerű konfigurációs fájl használatával meghatározhatja, hogy a modell API mely URL-címeket támogatja, és milyen adatokat ad vissza. A beépülő modul emellett támogatja a CORS-t az ügyféloldali alkalmazások tartományközi használatához. A beépülő modul támogatja az API-kulcsok hitelesítését is, így biztonságossá teheti a modell API-t egy API-kulccsal, és tesztelheti, hogy az alkalmazás megfelelően küldi-e el a kulcsot.

Scenario

Például olyan alkalmazást készít, amely lehetővé teszi a felhasználók számára az ügyfelek kezelését. Az adatok lekéréséhez meg kell hívnia a /customers háttér API végpontját. Az API egy API-kulccsal van védve. Annak érdekében, hogy a háttérrendszer csapata ne várjon a munkájuk befejezésére, úgy dönt, hogy a Dev Proxy használatával szimulálja az API-t, és visszaadja a szükséges adatokat.

Mielőtt hozzákezdene

Először hozzon létre egy szimulált CRUD API-t ügyféladatokkal. Az API működésének megerősítése után egy API-kulccsal biztonságossá teheti azt.

1. példa: A fejlécben lévő API-kulccsal védett CRUD API szimulálása

Az első példában a teljes API-t egy API-kulccsal védi, amelyet az ügyfelek HTTP-fejlécben küldenek.

A fájlban adja meg az customers-api.json API-kulcsok hitelesítésével kapcsolatos információkat.

Fájl:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "headerName": "X-API-Key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

Ha megadja a auth tulajdonságot apiKey , az API-t egy API-kulccsal védi a rendszer. A tulajdonságban apiKeyAuthConfig adja meg a konfiguráció részleteit. A apiKey tulajdonság az érvényes API-kulcsot adja meg, a headerName tulajdonság pedig azt a HTTP-fejlécet adja meg, ahol a beépülő modul keresi a kulcsot.

Ha úgy próbálja meghívni az API-t, hogy a X-API-Key fejléc nincs my-secret-key értékre állítva, akkor 401 Unauthorized választ kap.

2. példa: EGY LEKÉRDEZÉSI PARAMÉTERBEN API-kulccsal védett CRUD API szimulálása

Egyes API-kban az ügyfelek lekérdezési sztring paraméterként küldik el az API-kulcsot. Ezt a viselkedést a queryParameterName tulajdonság konfigurálásával szimulálhatja.

Frissítse a fájlt az customers-api.json alábbiak szerint:

Fájl:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "queryParameterName": "api_key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

Ebben a példában a beépülő modul megkeresi az API-kulcsot a lekérdezési sztring api_key paraméterben. Például a https://api.contoso.com/v1/customers?api_key=my-secret-key hívása sikeres, míg a https://api.contoso.com/v1/customers hívás 401 Unauthorized választ ad vissza.

3. példa: CRUD API szimulálása, amely a fejlécből és a lekérdezési paraméterből is elfogad egy API-kulcsot

A beépülő modult úgy is konfigurálhatja, hogy fogadja el az API-kulcsot egy fejlécből és egy lekérdezési paraméterből is. A beépülő modul először ellenőrzi a fejlécet. Ha a fejléc nem tartalmazza az API-kulcsot, a beépülő modul ellenőrzi a lekérdezési paramétert.

Frissítse a fájlt az customers-api.json alábbiak szerint:

Fájl:customers-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "https://api.contoso.com/v1/customers",
  "dataFile": "customers-data.json",
  "auth": "apiKey",
  "apiKeyAuthConfig": {
    "apiKey": "my-secret-key",
    "headerName": "X-API-Key",
    "queryParameterName": "api_key"
  },
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    },
    {
      "action": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

Ebben a példában a fejlécben vagy X-API-Key a api_key lekérdezési paraméterben található API-kulcsot tartalmazó kérés engedélyezve van.

Következő lépés

További információ a CrudApiPluginról.

Minták

Lásd még a kapcsolódó Dev Proxy-mintákat: