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. 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.
CrudApiPlugin
Za 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 na potrzeby użycia między domenami z aplikacji po stronie klienta.
MockResponsePlugin
Gdzie umożliwia zdefiniowanie statycznych makiety odpowiedzi, umożliwia zdefiniowanie dynamicznego makiety interfejsu API, CrudApiPlugin
którego można użyć do interakcji z danymi i wyświetlenia zmian odzwierciedlonych w pozornym zestawie danych.
Scenariusz
Załóżmy, że tworzysz aplikację, która umożliwia użytkownikom zarządzanie klientami. Aby pobrać dane, musisz wywołać /customers
punkt końcowy interfejsu API zaplecza. 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 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"
}
}
W pliku zdefiniujesz customers-api.json
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})]"
}
]
}
We właściwości zdefiniujesz baseUrl
podstawowy adres URL pozornego interfejsu API. We właściwości zdefiniujesz dataFile
plik zawierający pozorne 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:
- pobierz wszystkich klientów, dzwoniąc
GET /v1/customers
- uzyskiwanie pojedynczego klienta przez połączenie
GET /v1/customers/{customer-id}
- dodaj nowego klienta, wywołując polecenie
POST /v1/customers
, - zaktualizuj klienta, wywołując polecenie
PATCH /v1/customers/{customer-id}
, - usuwanie klienta przez wywołanie polecenia
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 zdefiniujesz customers-data.json
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 dewelopera i wywołasz https://api.contoso.com/v1/customers
punkt końcowy. Serwer proxy dewelopera 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: