Partilhar via


Simular uma API CRUD

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 estão atualizando-as para atender aos requisitos mais recentes. Para evitar esperar, você normalmente cria uma API simulada que retorna os dados necessários. Embora essa abordagem desbloqueie você, ela exige que você gaste tempo na criação de uma API que você eventualmente substitui pela real. Para evitar perder 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 plugin também suporta CORS para uso entre domínios a partir de aplicativos do lado do cliente.

Onde o MockResponsePlugin permite definir respostas simuladas estáticas, o CrudApiPlugin permite que você defina uma API simulada dinâmica que você pode usar para interagir com dados e ver suas alterações refletidas no conjunto de dados simulados.

Cenário

Digamos que você esteja criando um aplicativo que permite que os usuários gerenciem clientes. Para obter os dados, tem de chamar o /customers endpoint da API de back-end. 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.

Você começa por habilitar o CrudApiPlugin e configurar para usar o ficheiro customers-api.json.

{
  "name": "CrudApiPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "customersApi"
}
{
  "customersApi": {
    "apiFile": "customers-api.json"
  }
}

customers-api.json No arquivo, você define a API de clientes fictícios.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.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})]"
    }
  ]
}

Na propriedade baseUrl, define-se a URL base da API fictícia. Na propriedade dataFile, define-se o ficheiro que contém dados fictícios do cliente. Na propriedade actions, definimos as ações suportadas e como estas são mapeadas para os métodos HTTP e URLs. Você deseja usar sua API para:

  • Obtenha todos os clientes, ligando para GET /v1/customers
  • obtenha um único cliente, ligando para GET /v1/customers/{customer-id}
  • adicionar um novo cliente, chamando POST /v1/customers,
  • atualizar um cliente, chamando PATCH /v1/customers/{customer-id},
  • excluir um cliente, chamando DELETE /v1/customers/{customer-id}

Em seus URLs, você usa o {customer-id} parâmetro, que o plug-in substitui pelo ID de cliente real do URL. O plugin também usa o {customer-id} parâmetro em uma consulta JSONPath para procurar o cliente no arquivo de dados.

customers-data.json No arquivo, você define os dados simulados do cliente.

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Você inicia o Dev Proxy e chama o endpoint https://api.contoso.com/v1/customers. O Dev Proxy interceta a solicitação e retorna os dados simulados do cliente.

[
  {
    "id": 1,
    "name": "Contoso",
    "address": "4567 Main St Buffalo, NY 98052"
  },
  {
    "id": 2,
    "name": "Fabrikam",
    "address": "4567 Main St Buffalo, NY 98052"
  }
]

Próximo passo

Saiba mais sobre o CrudApiPlugin.

Exemplos

Consulte também os exemplos relacionados de Dev Proxy: