Simulace rozhraní CRUD API

Při vytváření aplikací často komunikujete s back-endovými rozhraními API. Někdy tato rozhraní API ještě nejsou dostupná nebo je jiné týmy aktualizují tak, aby splňovaly nejnovější požadavky. Abyste se vyhnuli čekání, obvykle vytvoříte napodobenou verzi rozhraní API, která vrátí potřebná data. Tento přístup vás sice odblokuje, ale 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í vývojového proxy serveru simulovat rozhraní CRUD API a urychlit vývoj.

Pomocí příkazu CrudApiPluginmůžete simulovat rozhraní CRUD (Create, Read, Update, Delete) API 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í. Modul plug-in také podporuje CORS pro použití mezi doménami z aplikací na straně klienta.

Kde vám nástroj MockResponsePlugin umožňuje definovat statické napodobení odpovědí, CrudApiPlugin umožňuje definovat dynamické rozhraní API napodobení, které můžete použít k interakci s daty a vidět změny, které se projeví v sadě napodobených dat.

Scenario

Například vytváříte aplikaci, která uživatelům umožňuje spravovat zákazníky. Pokud chcete získat data, musíte volat /customers koncový bod back-endového rozhraní API. Abyste se vyhnuli čekání na dokončení práce back-endového týmu, rozhodnete se použít proxy pro vývoj k simulaci rozhraní API a vrácení potřebných dat.

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

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

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

{
  "$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": "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 jejich mapování na metody HTTP a adresy URL. Rozhraní API chcete použít k:

  • získat všechny zákazníky, a to voláním GET /v1/customers
  • získat jednoho zákazníka voláním GET /v1/customers/{customer-id}
  • přidání nového zákazníka voláním POST /v1/customers
  • aktualizace zákazníka voláním PATCH /v1/customers/{customer-id},
  • odstranění 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é používá {customer-id} parametr v dotazu JSONPath k vyhledání zákazníka v datovém souboru.

customers-data.json V souboru definujete napodobení zákaznických dat.

[
  {
    "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 https://api.contoso.com/v1/customers koncový bod. Dev Proxy zachytí požadavek a vrátí napodobená 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: