Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In één oogopslag
Doel: CRUD-API simuleren met API-sleutelverificatie
Tijd: 10 minuten
Invoegtoepassingen:CrudApiPlugin
Vereisten:Dev Proxy instellen
Bij het bouwen van apps werkt u vaak met back-end-API's. Soms zijn deze API's nog niet beschikbaar, of andere teams werken ze bij om te voldoen aan de nieuwste vereisten. Om te voorkomen dat u wacht, maakt u doorgaans een mock-API die de gegevens retourneert die u nodig hebt. Hoewel deze methode u deblokkert, moet u tijd besteden aan het bouwen van een API die u uiteindelijk vervangt door de echte. Het wordt nog ingewikkelder wanneer u uw API wilt beveiligen met een API-sleutel. Om te voorkomen dat u tijd verspilt, kunt u Dev Proxy gebruiken om een CRUD-API te simuleren en de ontwikkeling te versnellen.
Met behulp van de CrudApiPluginAPI kunt u een CRUD-API (Maken, Lezen, Bijwerken, Verwijderen) simuleren met een gegevensarchief in het geheugen. Met behulp van een eenvoudig configuratiebestand kunt u definiëren welke URL's uw mock-API ondersteunt en welke gegevens worden geretourneerd. De invoegtoepassing biedt ook ondersteuning voor CORS voor gebruik tussen domeinen vanuit toepassingen aan de clientzijde. De invoegtoepassing biedt ook ondersteuning voor API-sleutelverificatie, zodat u uw mock-API kunt beveiligen met een API-sleutel en kunt testen of uw app de sleutel correct verzendt.
Scenario
Stel dat u een app bouwt waarmee gebruikers klanten kunnen beheren. Als u de gegevens wilt ophalen, moet u het /customers eindpunt van de back-end-API aanroepen. De API wordt beveiligd met een API-sleutel. Om te voorkomen dat het back-endteam wacht totdat het werk is voltooid, besluit u Dev Proxy te gebruiken om de API te simuleren en de benodigde gegevens te retourneren.
Voordat u begint
U begint met het maken van een gesimuleerde CRUD-API met klantgegevens. Nadat u hebt bevestigd dat de API werkt, kunt u deze beveiligen met een API-sleutel.
Voorbeeld 1: Een CRUD-API simuleren die is beveiligd met een API-sleutel in een header
In het eerste voorbeeld beveiligt u de hele API met een API-sleutel die clients verzenden in een HTTP-header.
Voeg in het customers-api.json bestand informatie toe over VERIFICATIE van API-sleutels.
Bestand: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})]"
}
]
}
Door de eigenschap auth in te stellen op apiKey, geeft u aan dat de API is beveiligd met een API-sleutel. In de apiKeyAuthConfig eigenschap geeft u de configuratiegegevens op. De apiKey eigenschap geeft de geldige API-sleutel op en de headerName eigenschap geeft de HTTP-header op waar de invoegtoepassing naar de sleutel zoekt.
Als u de API probeert aan te roepen zonder dat de X-API-Key header is ingesteld my-secret-key, krijgt u een 401 Unauthorized antwoord.
Voorbeeld 2: Een CRUD-API simuleren die is beveiligd met een API-sleutel in een queryparameter
In sommige API's verzenden clients de API-sleutel als een querytekenreeksparameter. U kunt dit gedrag simuleren door de queryParameterName eigenschap te configureren.
Werk het customers-api.json bestand als volgt bij:
Bestand: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})]"
}
]
}
In dit voorbeeld zoekt de invoegtoepassing naar de API-sleutel in de api_key querytekenreeksparameter. Zo lukt het aanroepen van https://api.contoso.com/v1/customers?api_key=my-secret-key bijvoorbeeld, terwijl het aanroepen van https://api.contoso.com/v1/customers een 401 Unauthorized-antwoord teruggeeft.
Voorbeeld 3: Een CRUD-API simuleren die een API-sleutel accepteert van zowel header- als queryparameter
U kunt de invoegtoepassing ook configureren om de API-sleutel te accepteren vanuit zowel een header als een queryparameter. De invoegtoepassing controleert eerst de header. Als de header de API-sleutel niet bevat, controleert de invoegtoepassing de queryparameter.
Werk het customers-api.json bestand als volgt bij:
Bestand: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})]"
}
]
}
In dit voorbeeld is een aanvraag met de API-sleutel in de X-API-Key header of de api_key queryparameter geautoriseerd.
Volgende stap
Meer informatie over de CrudApiPlugin.
Samples
Zie ook de gerelateerde Dev Proxy-voorbeelden: