Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Objetivo: Simular a API CRUD com autenticação de chave de API
Tempo: 10 minutos
Plugins:CrudApiPlugin
Pré-requisitos:Configurar o Proxy de Desenvolvimento
Ao criar aplicativos, você geralmente interage com APIs de back-end. Às vezes, essas APIs ainda não estão disponíveis ou outras equipes as estão atualizando para atender aos requisitos mais recentes. Para evitar espera, você normalmente cria uma API fictícia que retorna os dados necessários. Embora essa abordagem o desbloqueie, ela exige que você gaste tempo na criação de uma API que eventualmente substitua pela real. Fica ainda mais complicado quando você precisa proteger sua API com uma chave de API. Para evitar perda de tempo, você pode usar o Dev Proxy para simular uma API CRUD e acelerar o desenvolvimento.
Usando o CrudApiPlugin, você pode simular uma API CRUD (Criar, Ler, Atualizar, Excluir) com um armazenamento de dados na memória. Usando um arquivo de configuração simples, você pode definir quais URLs sua API simulada suporta e quais dados ela retorna. O plug-in também oferece suporte a CORS para uso entre domínios de aplicativos do lado do cliente. O plug-in também dá suporte à autenticação de chave de API, para que você possa proteger sua API simulada com uma chave de API e testar se o aplicativo envia a chave corretamente.
Scenario
Digamos que você esteja criando um aplicativo que permite aos usuários gerenciar clientes. Para obter os dados, você precisa chamar o ponto de extremidade /customers da API de back-end. A API é protegida com uma chave de API. Para evitar esperar que a equipe de back-end termine seu trabalho, você decide usar o Dev Proxy para simular a API e retornar os dados necessários.
Antes de começar
Você começa criando uma API CRUD simulada com dados do cliente. Depois de confirmar se a API funciona, você pode protegê-la com uma chave de API.
Exemplo 1: Simular uma API CRUD protegida com uma chave de API em um cabeçalho
No primeiro exemplo, você protege toda a API com uma chave de API que os clientes enviam em um cabeçalho HTTP.
customers-api.json No arquivo, adicione informações sobre a autenticação de chave de API.
Arquivo: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})]"
}
]
}
Ao definir a propriedade auth como apiKey, você especifica que a API é protegida por uma chave de API. Na propriedade apiKeyAuthConfig, você especifica os detalhes da configuração. A apiKey propriedade especifica a chave de API válida e a headerName propriedade especifica o cabeçalho HTTP em que o plug-in procura a chave.
Se você tentar chamar a API sem o X-API-Key cabeçalho definido como my-secret-key, você obterá uma 401 Unauthorized resposta.
Exemplo 2: Simular uma API CRUD protegida com uma chave de API em um parâmetro de consulta
Em algumas APIs, os clientes enviam a chave de API como um parâmetro de cadeia de caracteres de consulta. Você pode simular esse comportamento configurando a queryParameterName propriedade.
Atualize o customers-api.json arquivo da seguinte maneira:
Arquivo: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})]"
}
]
}
Neste exemplo, o plug-in procura a chave de API no api_key parâmetro de cadeia de caracteres de consulta. Por exemplo, a chamada https://api.contoso.com/v1/customers?api_key=my-secret-key é bem-sucedida, enquanto a chamada https://api.contoso.com/v1/customers retorna uma 401 Unauthorized resposta.
Exemplo 3: Simule uma API CRUD que aceita uma chave de API tanto do cabeçalho quanto do parâmetro de consulta
Você também pode configurar o plug-in para aceitar a chave de API a partir de um cabeçalho e de um parâmetro de consulta. O plug-in verifica o cabeçalho primeiro. Se o cabeçalho não contiver a chave de API, o plug-in verificará o parâmetro de consulta.
Atualize o customers-api.json arquivo da seguinte maneira:
Arquivo: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})]"
}
]
}
Neste exemplo, uma solicitação que inclui a chave de API no X-API-Key cabeçalho ou no parâmetro de api_key consulta está autorizada.
Próxima etapa
Saiba mais sobre o CrudApiPlugin.
Samples
Confira também os exemplos relacionados do Dev Proxy: