Sdílet prostřednictvím


Simulace rozhraní CRUD API

Při vytváření aplikací často komunikujete s back-endovými rozhraními API. V některých případech tato rozhraní API ještě nejsou dostupná nebo je ostatní týmy aktualizují tak, aby splňovaly nejnovější požadavky. Abyste se vyhnuli čekání, obvykle vytvoříte napodobené rozhraní API, které vrací potřebná data. I když vás tento přístup odblokuje, vyžaduje, abyste strávili čas vytvořením rozhraní API, které nakonec nahradíte skutečným rozhraním API. Abyste se vyhnuli plýtvání časem, můžete pomocí Dev Proxy simulovat rozhraní CRUD API a urychlit vývoj.

Pomocí CrudApiPlugin můžete simulovat rozhraní CRUD API (vytvoření, čtení, aktualizace, odstranění) s úložištěm dat v paměti. Pomocí jednoduchého konfiguračního souboru můžete definovat, které adresy URL vaše napodobené rozhraní API podporuje a jaká data vrací. Plug-in také podporuje CORS pro použití v rámci různých domén z aplikací na straně klienta.

MockResponsePlugin, který umožňuje definovat statické odpovědi, zatímco CrudApiPlugin vám umožňuje definovat dynamické API napodobení, které můžete použít k interakci s daty a vidět, jak se změny projeví v nápodobné datové sadě.

Scénář

Řekněme, že vytváříte aplikaci, která uživatelům umožňuje spravovat zákazníky. Pokud chcete získat data, musíte odeslat požadavek na /customers koncový bod backendového rozhraní API. Abyste se vyhnuli čekání na dokončení práce back-endového týmu, rozhodnete se pomocí dev proxy serveru simulovat rozhraní API a vrátit potřebná data.

Začnete tím, že povolíte CrudApiPlugin a nakonfigurujete jej, aby používal soubor customers-api.json.

{
  "name": "CrudApiPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "customersApi"
}
{
  "customersApi": {
    "apiFile": "customers-api.json"
  }
}

customers-api.json V souboru definujete napodobení rozhraní API zákazníků.

{
  "$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": "delete",
      "url": "/{customer-id}",
      "query": "$.[?(@.id == {customer-id})]"
    }
  ]
}

baseUrl Ve vlastnosti definujete základní adresu URL napodobeného rozhraní API. dataFile Ve vlastnosti definujete soubor, který obsahuje napodobená zákaznická data. actions Ve vlastnosti definujete podporované akce a způsob mapování na metody HTTP a adresy URL. Rozhraní API chcete použít k:

  • získat všechny zákazníky voláním GET /v1/customers
  • získání jednoho zákazníka voláním GET /v1/customers/{customer-id}
  • přidat nového zákazníka zavoláním POST /v1/customers
  • informovat zákazníka telefonicky na PATCH /v1/customers/{customer-id},
  • Smazat zákazníka voláním DELETE /v1/customers/{customer-id}

V adresách URL použijete {customer-id} parametr, který modul plug-in nahradí skutečným ID zákazníka z adresy URL. Modul plug-in také pomocí parametru {customer-id} v dotazu JSONPath vyhledá zákazníka v datovém souboru.

V souboru customers-data.json definujete testovací zákaznická data.

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Spustíte Dev Proxy a zavoláte na koncový bod https://api.contoso.com/v1/customers. Dev Proxy zachytí požadavek a vrátí testovací zákaznická data.

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Další krok

Přečtěte si další informace o CrudApiPlugin.

Ukázky

Projděte si také související ukázky dev proxy serveru: