Udostępnij za pośrednictwem


Symulowanie interfejsu API CRUD

Podczas tworzenia aplikacji często masz do czynienia z interfejsami API zaplecza. Czasami te interfejsy API nie są jeszcze dostępne lub inne zespoły aktualizują je w celu spełnienia najnowszych wymagań. Aby uniknąć oczekiwania, zazwyczaj należy utworzyć pozorny interfejs API, który zwraca potrzebne dane. Mimo że to podejście odblokuje Cię, wymaga to poświęcania czasu na tworzenie interfejsu API, który ostatecznie zastępuje się rzeczywistym. Aby uniknąć marnowania czasu, możesz użyć serwera proxy deweloperskiego do symulowania interfejsu API CRUD i przyspieszenia opracowywania.

CrudApiPluginZa pomocą programu można symulować interfejs API CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) przy użyciu magazynu danych w pamięci. Korzystając z prostego pliku konfiguracji, można zdefiniować adresy URL obsługiwane przez pozorny interfejs API i dane, które zwraca. Wtyczka obsługuje również mechanizm CORS do użytku w aplikacjach działających po stronie klienta, które korzystają z zasobów między domenami.

Gdzie MockResponsePlugin umożliwia zdefiniowanie statycznych przykładowych odpowiedzi, CrudApiPlugin umożliwia zdefiniowanie dynamicznego przykładowego interfejsu API, którego można użyć do interakcji z danymi i zobaczenia zmian odzwierciedlonych w symulowanym zestawie danych.

Scenariusz

Załóżmy, że tworzysz aplikację, która umożliwia użytkownikom zarządzanie klientami. Aby pobrać dane, musisz wywołać /customers endpoint interfejsu zaplecza API. Aby uniknąć oczekiwania na zakończenie pracy przez zespół zaplecza, decydujesz się użyć serwera proxy deweloperskiego do symulowania interfejsu API i zwrócenia potrzebnych danych.

Zacznij od włączenia CrudApiPlugin i skonfigurowania go do korzystania z pliku customers-api.json.

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

W pliku customers-api.json zdefiniujesz przykładowy interfejs API klientów.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/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})]"
    }
  ]
}

We właściwości baseUrl zdefiniuj podstawowy adres URL fałszywego interfejsu API. We właściwości dataFile zdefiniujesz plik zawierający fałszywe dane klienta. actions We właściwości zdefiniujesz obsługiwane akcje i sposób ich mapowania na metody i adresy URL PROTOKOŁU HTTP. Chcesz użyć interfejsu API do:

  • Pozyskaj wszystkich klientów, dzwoniąc pod GET /v1/customers
  • uzyskiwanie pojedynczego klienta przez połączenie GET /v1/customers/{customer-id}
  • dodaj nowego klienta, wywołując polecenie POST /v1/customers,
  • poinformuj klienta, dzwoniąc pod PATCH /v1/customers/{customer-id}
  • Usuń klienta, wywołując DELETE /v1/customers/{customer-id}

W adresach URL użyjesz parametru {customer-id} , który wtyczka zastępuje rzeczywistym identyfikatorem klienta z adresu URL. Wtyczka używa również parametru {customer-id} w zapytaniu JSONPath, aby wyszukać klienta w pliku danych.

W pliku customers-data.json zdefiniujesz przykładowe dane klienta.

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

Uruchamiasz Dev Proxy i wywołujesz punkt końcowy https://api.contoso.com/v1/customers. Proxy deweloperski przechwytuje żądanie i zwraca symulowane dane klienta.

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

Następny krok

Dowiedz się więcej o crudApiPlugin.

Przykłady

Zobacz również powiązane przykłady serwera proxy deweloperów: