Compartilhar via


Simule uma API CRUD na Internet

Visão geral
Objetivo: Expor a API CRUD por meio de túneis de desenvolvimento
Tempo: 15 minutos
Plugins:CrudApiPlugin
Pré-requisitos:Configurar Proxy de Desenvolvimento, Túneis de Desenvolvimento

O Proxy de Desenvolvimento permite simular APIs CRUD sem precisar criá-las. Simular APIs usando o Proxy de Desenvolvimento permite economizar tempo e acelerar o desenvolvimento. Ao integrar sua API aos serviços de nuvem, você precisa expor sua API pela Internet para que o serviço de nuvem possa acessá-la. Para expor uma API CRUD simulada pelo Dev Proxy na internet, use Túneis de Desenvolvimento. Este artigo explica como configurar uma API CRUD a ser exposta na Internet usando Túneis de Desenvolvimento.

Dica

A API CRUD neste artigo baseia-se no exemplo de Proxy de Desenvolvimento do banco de dados Northwind.

Configurar a API CRUD para ser exposta na Internet

Para expor uma API CRUD simulada pelo Proxy de Desenvolvimento na Internet, comece configurando a API CRUD.

Importante

Neste momento, você só pode expor APIs HTTP CRUD na Internet usando Túneis de Desenvolvimento.

Definir os dados da API CRUD

Crie um arquivo de dados, chamado orders-data.json, que faça backup da API CRUD, por exemplo:

Arquivo: orders-data.json

[
  {
    "OrderID": 10248,
    "CustomerID": "VINET",
    "EmployeeID": 5,
    "OrderDate": "1996-07-04T00:00:00",
    "RequiredDate": "1996-08-01T00:00:00",
    "ShippedDate": "1996-07-16T00:00:00",
    "ShipVia": 3,
    "Freight": 32.38,
    "ShipName": "Vins et alcools Chevalier",
    "ShipAddress": "59 rue de l'Abbaye",
    "ShipCity": "Reims",
    "ShipPostalCode": "51100",
    "ShipCountry": "France"
  },
  {
    "OrderID": 10249,
    "CustomerID": "TOMSP",
    "EmployeeID": 6,
    "OrderDate": "1996-07-05T00:00:00",
    "RequiredDate": "1996-08-16T00:00:00",
    "ShippedDate": "1996-07-10T00:00:00",
    "ShipVia": 1,
    "Freight": 11.61,
    "ShipName": "Toms Spezialitäten",
    "ShipAddress": "Luisenstr. 48",
    "ShipCity": "Münster",
    "ShipPostalCode": "44087",
    "ShipCountry": "Germany"
  }
]

Configurar a API CRUD

Em seguida, crie o arquivo de configuração de API nomeado orders-api.json, em que você especifica a URL da API CRUD, suas operações e o arquivo de dados. Especifique uma URL HTTP na baseUrl propriedade:

Arquivo: orders-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/crudapiplugin.apifile.schema.json",
  "baseUrl": "http://api.northwind.com/orders",
  "auth": "none",
  "dataFile": "orders-data.json",
  "actions": [
    {
      "action": "getAll"
    },
    {
      "action": "getOne",
      "url": "/{order-id}",
      "query": "$.[?(@.OrderID == {order-id})]"
    },
    {
      "action": "create"
    },
    {
      "action": "merge",
      "url": "/{order-id}",
      "query": "$.[?(@.OrderID == {order-id})]"
    },
    {
      "action": "delete",
      "url": "/{order-id}",
      "query": "$.[?(@.OrderID == {order-id})]"
    }
  ]
}

Definir configuração do Proxy de Desenvolvimento

Em seguida, crie um arquivo de configuração do Proxy de Desenvolvimento nomeado devproxyrc.json com o CrudApiPlugin habilitado. Configure o Proxy de Desenvolvimento para ouvir a URL que você configurou para sua API CRUD:

Arquivo: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "CrudApiPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "ordersApi"
    }
  ],
  "urlsToWatch": [
    "http://api.northwind.com/*"
  ],
  "ordersApi": {
    "apiFile": "orders-api.json"
  }
}

Verificar a configuração

Verifique se a API CRUD está funcionando corretamente executando o Proxy de Desenvolvimento e enviando solicitações para a API CRUD.

Inicie o Proxy de Desenvolvimento, supondo que você salvou a configuração do Proxy de Desenvolvimento em um arquivo nomeado devproxyrc.json no diretório de trabalho atual:

devproxy

Chame a API CRUD usando curl:

$ curl -x http://127.0.0.1:8000 http://api.northwind.com/orders

[
  {
    "OrderID": 10248,
    "CustomerID": "VINET",
    "EmployeeID": 5,
    "OrderDate": "1996-07-04T00:00:00",
    "RequiredDate": "1996-08-01T00:00:00",
    "ShippedDate": "1996-07-16T00:00:00",
    "ShipVia": 3,
    "Freight": 32.38,
    "ShipName": "Vins et alcools Chevalier",
    "ShipAddress": "59 rue de l'Abbaye",
    "ShipCity": "Reims",
    "ShipPostalCode": "51100",
    "ShipCountry": "France"
  },
  {
    "OrderID": 10249,
    "CustomerID": "TOMSP",
    "EmployeeID": 6,
    "OrderDate": "1996-07-05T00:00:00",
    "RequiredDate": "1996-08-16T00:00:00",
    "ShippedDate": "1996-07-10T00:00:00",
    "ShipVia": 1,
    "Freight": 11.61,
    "ShipName": "Toms Spezialitäten",
    "ShipAddress": "Luisenstr. 48",
    "ShipCity": "Münster",
    "ShipPostalCode": "44087",
    "ShipCountry": "Germany"
  }
]

Expor a API CRUD pela Internet

Para expor a API CRUD na Internet, inicie um túnel de desenvolvimento mapeado para a porta do Proxy de Desenvolvimento. Configure o túnel para usar o nome do host configurado para a API CRUD.

Aviso

Permitir acesso anônimo a um túnel de desenvolvimento significa que qualquer pessoa na Internet poderá se conectar ao servidor local, se puder adivinhar a ID do túnel de desenvolvimento.

$ devtunnel host -p 8000 -a --host-header api.northwind.com

Hosting port: 8000
Connect via browser: https://vpfm55qw.euw.devtunnels.ms:8000, https://vpfm55qw-8000.euw.devtunnels.ms
Inspect network activity: https://vpfm55qw-8000-inspect.euw.devtunnels.ms

Ready to accept connections for tunnel: vpfm55qw

Chame a API CRUD que o Dev Proxy simula por meio do dev tunnel usando curl:

$ curl https://vpfm55qw-8000.euw.devtunnels.ms/orders

[
  {
    "OrderID": 10248,
    "CustomerID": "VINET",
    "EmployeeID": 5,
    "OrderDate": "1996-07-04T00:00:00",
    "RequiredDate": "1996-08-01T00:00:00",
    "ShippedDate": "1996-07-16T00:00:00",
    "ShipVia": 3,
    "Freight": 32.38,
    "ShipName": "Vins et alcools Chevalier",
    "ShipAddress": "59 rue de l'Abbaye",
    "ShipCity": "Reims",
    "ShipPostalCode": "51100",
    "ShipCountry": "France"
  },
  {
    "OrderID": 10249,
    "CustomerID": "TOMSP",
    "EmployeeID": 6,
    "OrderDate": "1996-07-05T00:00:00",
    "RequiredDate": "1996-08-16T00:00:00",
    "ShippedDate": "1996-07-10T00:00:00",
    "ShipVia": 1,
    "Freight": 11.61,
    "ShipName": "Toms Spezialitäten",
    "ShipAddress": "Luisenstr. 48",
    "ShipCity": "Münster",
    "ShipPostalCode": "44087",
    "ShipCountry": "Germany"
  }
]

Consulte também