Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na pierwszy rzut oka
Celem: Symulowanie interfejsu API CRUD przy użyciu uwierzytelniania klucza interfejsu API
Czas: 10 minut
Plugins:CrudApiPlugin
Wymagania wstępne:konfigurowanie serwera proxy deweloperskiego
Podczas tworzenia aplikacji często korzystasz z backendowych interfejsów API. 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 Cię odblokowuje, wymaga od Ciebie poświęcenia czasu na budowanie interfejsu API, który docelowo zastępujesz rzeczywistym. To staje się jeszcze bardziej skomplikowane, kiedy trzeba zabezpieczyć API kluczem API. 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 na potrzeby użycia między domenami w aplikacjach klienckich. Wtyczka obsługuje również uwierzytelnianie klucza interfejsu API, dzięki czemu można zabezpieczyć pozorny interfejs API za pomocą klucza interfejsu API i przetestować, czy aplikacja prawidłowo wysyła klucz.
Scenario
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. Interfejs API jest zabezpieczony przy użyciu klucza 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.
Zanim rozpoczniesz
Zacznij od utworzenia symulowanego interfejsu API CRUD z danymi klienta. Po potwierdzeniu, że interfejs API działa, można go zabezpieczyć przy użyciu klucza interfejsu API.
Przykład 1: Symulować interfejs API CRUD zabezpieczony kluczem API w nagłówku
W pierwszym przykładzie zabezpieczasz cały interfejs API za pomocą klucza API, który klienci wysyłają w nagłówku HTTP.
W pliku customers-api.json dodaj informacje o uwierzytelnianiu za pomocą klucza API.
Plik:customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "apiKey",
"apiKeyAuthConfig": {
"apiKey": "my-secret-key",
"headerName": "X-API-Key"
},
"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})]"
}
]
}
Ustawiając właściwość auth na apiKey, określasz, że interfejs API jest zabezpieczony kluczem API. W właściwości apiKeyAuthConfig określasz szczegóły konfiguracji. Właściwość apiKey określa prawidłowy klucz interfejsu API, a headerName właściwość określa nagłówek HTTP, w którym wtyczka szuka klucza.
Jeśli spróbujesz wywołać API bez ustawienia nagłówka X-API-Key na my-secret-key, otrzymasz odpowiedź 401 Unauthorized.
Przykład 2. Symulowanie interfejsu API CRUD zabezpieczonego przy użyciu klucza interfejsu API w parametrze zapytania
W niektórych interfejsach API klienci wysyłają klucz interfejsu API jako parametr ciągu zapytania. To zachowanie można symulować, konfigurując queryParameterName właściwość .
customers-api.json Zaktualizuj plik w następujący sposób:
Plik:customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "apiKey",
"apiKeyAuthConfig": {
"apiKey": "my-secret-key",
"queryParameterName": "api_key"
},
"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})]"
}
]
}
W tym przykładzie wtyczka szuka klucza interfejsu API w parametrze api_key ciągu zapytania. Na przykład wywołanie https://api.contoso.com/v1/customers?api_key=my-secret-key kończy się powodzeniem, podczas gdy wywołanie https://api.contoso.com/v1/customers zwraca odpowiedź 401 Unauthorized.
Przykład 3. Symulowanie interfejsu API CRUD, który akceptuje klucz interfejsu API zarówno z nagłówka, jak i parametru zapytania
Możesz również skonfigurować wtyczkę tak, aby akceptowała klucz interfejsu API zarówno z nagłówka, jak i parametru zapytania. Wtyczka najpierw sprawdza nagłówek. Jeśli nagłówek nie zawiera klucza interfejsu API, wtyczka sprawdza parametr zapytania.
customers-api.json Zaktualizuj plik w następujący sposób:
Plik:customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "apiKey",
"apiKeyAuthConfig": {
"apiKey": "my-secret-key",
"headerName": "X-API-Key",
"queryParameterName": "api_key"
},
"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})]"
}
]
}
W tym przykładzie żądanie zawierające klucz API zarówno w nagłówku X-API-Key, jak i w parametrze zapytania api_key jest autoryzowane.
Następny krok
Dowiedz się więcej o crudApiPlugin.
Przykłady
Zobacz również powiązane przykłady serwera proxy dla programistów: