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.
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 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: