Symulowanie interfejsu API CRUD

Podczas tworzenia aplikacji często korzystasz z interfejsów 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. Chociaż takie 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 deweloperów do symulowania interfejsu API CRUD i przyspieszenia programowania.

Za pomocą programu CrudApiPluginmożna symulować interfejs API CRUD (Create, Read, Update, Delete) z magazynem danych w pamięci. Korzystając z prostego pliku konfiguracji, można zdefiniować adresy URL obsługiwane przez interfejs API makiety i zwracane dane. Wtyczka obsługuje również mechanizm CORS do użycia między domenami z aplikacji po stronie klienta.

MockResponsePlugin Gdzie umożliwia zdefiniowanie statycznych odpowiedzi makiety, CrudApiPlugin umożliwia zdefiniowanie dynamicznego makiety interfejsu API, którego można użyć do interakcji z danymi i zobaczyć zmiany odzwierciedlane w wyśmiewanym zestawie danych.

Scenariusz

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

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

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

customers-api.json W pliku zdefiniujesz pozorny interfejs API klientów.

{
  "$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 We właściwości zdefiniujesz podstawowy adres URL makiety interfejsu API. dataFile We właściwości zdefiniujesz plik zawierający pozorne dane klienta. actions We właściwości definiujesz obsługiwane akcje i sposób mapowania ich na metody i adresy URL PROTOKOŁU HTTP. Chcesz użyć interfejsu API do:

  • uzyskaj wszystkich klientów, dzwoniąc GET /v1/customers
  • uzyskiwanie pojedynczego klienta przez wywołanie połączenia GET /v1/customers/{customer-id}
  • dodaj nowego klienta, wywołując metodę POST /v1/customers,
  • zaktualizuj klienta, wywołując metodę PATCH /v1/customers/{customer-id},
  • usuwanie klienta przez wywołanie połączenia 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.

customers-data.json W pliku zdefiniujesz pozorne dane klienta.

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

Uruchom serwer proxy deweloperów i wywołaj https://api.contoso.com/v1/customers punkt końcowy. Serwer proxy deweloperów przechwytuje żądanie i zwraca pozorne 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: