Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A colpo d'occhio
Obiettivo: Simulare l'API CRUD con l'autenticazione della chiave API
Tempo: 10 minuti
Plugins:CrudApiPlugin
Prerequisiti:Configurare il proxy di sviluppo
Quando si creano app, spesso si interagisce con le API back-end. A volte, queste API non sono ancora disponibili o altri team li aggiornano per soddisfare i requisiti più recenti. Per evitare l'attesa, in genere si crea un'API fittizia che restituisce i dati necessari. Anche se questo approccio sblocca, richiede di dedicare tempo alla creazione di un'API che alla fine verrà sostituita con quella reale. Diventa ancora più complicato, quando è necessario proteggere l'API con una chiave API. Per evitare perdite di tempo, è possibile usare Dev Proxy per simulare un'API CRUD e velocizzare lo sviluppo.
Usando il CrudApiPlugin, è possibile simulare un'API CRUD (Create, Read, Update, Delete) utilizzando una memoria dati interna. Usando un file di configurazione semplice, è possibile definire gli URL supportati dall'API fittizia e i dati restituiti. Il plug-in supporta anche CORS per l'utilizzo tra domini da applicazioni lato client. Il plug-in supporta anche l'autenticazione della chiave API, in modo da poter proteggere l'API fittizia con una chiave API e verificare che l'app invii correttamente la chiave.
Scenario
Si supponga di creare un'app che consenta agli utenti di gestire i clienti. Per ottenere i dati, è necessario chiamare l'endpoint /customers dell'API back-end. L'API è protetta con una chiave API. Per evitare di attendere il completamento del lavoro del team back-end, si decide di usare Dev Proxy per simulare l'API e restituire i dati necessari.
Prima di iniziare
Per iniziare , creare un'API CRUD simulata con i dati dei clienti. Dopo aver verificato il funzionamento dell'API, è possibile proteggerla con una chiave API.
Esempio 1: Simulare un'API CRUD protetta con una chiave API in un'intestazione
Nel primo esempio si protegge l'intera API con una chiave API inviata dai client in un'intestazione HTTP.
customers-api.json Nel file aggiungere informazioni sull'autenticazione della chiave API.
File: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})]"
}
]
}
Impostando la auth proprietà su apiKey si specifica che l'API è protetta con una chiave API.
apiKeyAuthConfig Nella proprietà specificare i dettagli di configurazione. La apiKey proprietà specifica la chiave API valida e la headerName proprietà specifica l'intestazione HTTP in cui il plug-in cerca la chiave.
Se si tenta di chiamare l'API senza l'intestazione X-API-Key impostata su my-secret-key, si ottiene una 401 Unauthorized risposta.
Esempio 2: Simulazione di un'API CRUD protetta tramite una chiave API in un parametro di query
In alcune API, i client inviano la chiave API come parametro di stringa di query. È possibile simulare questo comportamento configurando la queryParameterName proprietà .
Aggiornare il customers-api.json file come segue:
File: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 questo esempio il plug-in cerca la chiave API nel api_key parametro query-string. Ad esempio, la chiamata ha esito positivo, mentre la chiamata https://api.contoso.com/v1/customers?api_key=my-secret-keyhttps://api.contoso.com/v1/customers restituisce una 401 Unauthorized risposta.
Esempio 3: Simulare un'API CRUD che accetta una chiave API sia dall'intestazione che dal parametro di query
È anche possibile configurare il plug-in per accettare la chiave API da un'intestazione e da un parametro di query. Il plug-in controlla per prima l'intestazione. Se l'intestazione non contiene la chiave API, il plug-in controlla il parametro di query.
Aggiornare il customers-api.json file come segue:
File: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 questo esempio, una richiesta che include la chiave API nell'intestazione X-API-Key oppure nel parametro di query api_key è autorizzata.
Passo successivo
Altre informazioni su CrudApiPlugin.
Esempi
Vedere anche gli esempi correlati di Dev Proxy: