Exercício – Adicionar outro aplicativo do Azure Functions a uma API existente
Lembre-se de que você integrará todos os microsserviços separados, que são Azure Functions, em apenas uma API. Você adicionou o aplicativo de funções Products a uma nova instância do Gerenciamento de API. Agora você deseja adicionar outro aplicativo de funções a essa API.
Neste exercício, adicione o aplicativo de funções Orders à API e use a ferramenta curl
para testar o sistema integrado.
Testar a função OrderDetails
Antes de adicionarmos o aplicativo de funções Orders à API, vamos testar a função que ele hospeda: OrderDetails.
No menu do recurso do Azure ou na Página inicial, selecione Todos os recursos. O painel Todos os recursos será exibido.
Classificar os recursos por Tipo e, em seguida, selecionar o Aplicativo de Funções cujo nome começa com OrderFunction. O painel Visão geral do Aplicativo de Funções OrderFunction é exibido.
Na lista de funções para seu aplicativo de funções, selecione OrderDetails. O painel de visão geral da função OrderDetails é exibido para a função.
No menu Detalhes do Pedido, em Desenvolvedor, selecione Codificar + Testar. O painel Codificar + Testar para a função OrderDetails é exibido, mostrando o conteúdo do arquivo
function.json
.Na barra de comandos, escolha Testar/Executar. A guia de parâmetros de Entrada para sua função OrderDetails é exibida.
No campo Método HTTP, selecione GET na lista suspensa e, em Consulta, selecione Adicionar parâmetro e, no campo Nome, insira nome e, no campo Valor, insira Chiba (o valor diferencia maiúsculas e minúsculas) e selecione Executar.
Um console de log é aberto e exibe o status da solicitação. A guia Saída exibe o código de resposta HTTP e conteúdo no formato JSON.
Opcionalmente, você pode executar mais solicitações usando os valores de nome Ramos e Castro para obter pedidos de clientes diferentes.
Selecione Fechar para fechar as guias Saída e Entrada para Testar/Executar.
Na barra de comandos do painel OrderDetails, selecione Obter URL da função. Observe que a URL é o nome da função dentro do domínio azurewebsites.net.
Adicionar uma função a uma API existente
Nesta etapa, adicionaremos a função Order ao recurso do Gerenciamento de API que criamos no exercício anterior. Nesse exercício, usamos a interface do Gerenciamento de API dentro da interface do aplicativo de funções. Aqui, navegaremos até a nossa instância do Gerenciamento de API por meio do menu de recurso do portal do Azure, apenas para demonstrar que ambas as abordagens estão disponíveis.
No menu do recurso do Azure ou na Página inicial, selecione Todos os recursos. O painel Todos os recursos será exibido.
Classifique os recursos por Tipo e selecione o serviço de Gerenciamento de API OnlineStore. O serviço de Gerenciamento de APIOnlineStore será exibido.
No menu, em APIs, selecione APIs. O painel APIs mostra opções para definir uma nova API.
Em Criar do recurso do Azure, selecione Aplicativo de Funções.
A caixa de diálogo Criar com base no Aplicativo de Funções será exibida.
Para selecionar o aplicativo de funções, selecione Procurar. O painel Importar Azure Functions é exibido.
No campo Definir configurações necessárias, selecione Selecionar.
(../media/5-import-azure-function-app-03-expanded.png#lightbox)
O painel Selecionar Aplicativo de Funções do Azure será exibido.
Selecione OrderFunctionNNNNNNN e escolha Selecionar. O painel Importar o Azure Functions é exibido novamente com o aplicativo de funções OrderDetails configurado.
Verifique se OrderDetails está marcado e, no final da página, selecione Selecionar para adicionar a função. A caixa de diálogo Criar com base no Aplicativo de Funções será exibida.
Substitua o valor no campo Sufixo de URL da API por pedidos. Observe como essa alteração atualiza a URL base. Selecione Criar para criar sua API.
O serviço de Gerenciamento de API OnlineStore exibe a guia Design com todas as APIs disponíveis (GET, POST) para OrderDetails.
Testar o ponto de extremidade dos pedidos da OnlineStore no portal
Agora que adicionamos OrderDetails à nossa API, vamos testá-la usando as ferramentas do Gerenciamento de API no portal do Azure.
Na guia Design das APIs OrderFunctionNNNNNN, em Todas as operações selecione GET OrderDetails e escolha a guia Testar.
Na seção Parâmetros de consulta, selecione Adicionar parâmetro e insira nome no campo NAME e Chiba e no campo VALUE. Selecione Enviar.
A guia mensagem de resposta HTTP mostra a solicitação HTTP bem-sucedida (HTTP/1.1/ 200 OK), juntamente com um objeto JSON mostrando uma ID do pedido, juntamente com o nome do cliente, o preço total do pedido e o status do envio.
Role para cima na página até a seção Solicitação HTTP e observe que a solicitação foi enviada a um subdomínio e subdiretório no domínio azure-api.net. Esse local é diferente do domínio de host azurewebsites.net.
Testar a API combinada
Podemos usar a ferramenta de linha de comando curl
para enviar solicitações à API. A cURL é ideal porque podemos usá-la para incluir a chave de assinatura correta com uma solicitação. Uma solicitação também precisa da localização da API, que está hospedada no Gerenciamento de API do Azure e que, nesse caso, consiste nas funções Products e Orders.
No menu do recurso do Azure ou na Página inicial, selecione Todos os recursos.
Classifique os recursos por Tipo e selecione o serviço de Gerenciamento de API OnlineStore. O serviço de Gerenciamento de APIOnlineStore será exibido.
Na seção Informações gerais, passe o mouse sobre o valor da URL de Gateway e selecione o ícone Copiar para a área de transferência.
No Azure Cloud Shell à direita, vamos definir algumas variáveis. Execute o comando a seguir, substituindo o espaço reservado
<paste URL here>
pelo valor da URL que você copiou para a área de transferência e pressione Enter. Esse valor define a variável de gateway.GATEWAY_URL=<paste URL here>
No Azure, no menu OnlineStore do serviço de Gerenciamento de API, role para baixo até API e selecione Assinaturas. O painel Assinaturas será exibido para sua instância de Gerenciamento de API OnlineStore.
Para Assinatura de acesso total interno, selecione as reticências ... na extrema direita dessa linha e selecione Mostrar/ocultar chaves no menu de contexto. A chave primária e a chave secundária para a API são exibidas.
No campo Chave primária, escolha o ícone Copiar para a área de transferência.
No Cloud Shell, execute o comando a seguir, substituindo o espaço reservado pelo valor na área de transferência e pressione Enter.
SUB_KEY=<paste key here>
Agora podemos solicitar detalhes de um pedido e de um produto consultando o mesmo serviço de Gerenciamento de API:
Para solicitar os detalhes de um cliente chamado Ramos, execute o seguinte comando no Cloud Shell:
curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
A resposta contém um bloco de código JSON com os detalhes do pedido, mostrando que o Pedido 56224 foi enviado para Pascale Henri. Você também pode experimentar o comando com os nomes Chiba e Barriclough para obter resultados diferentes.
Para solicitar os detalhes de um produto com a ID2, execute o seguinte comando no Cloud Shell:
curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
A resposta contém um bloco de código JSON com os detalhes de um produto. Experimente também o comando com os valores de ID1 e 3 para obter resultados diferentes.
Observe que, agora, as duas funções podem ser chamadas por meio de pontos de extremidade dentro do domínio azure-api.net (conforme definido pela GATEWAY_URL), que é o domínio usado pelo Gerenciamento de API do Azure. Em outros módulos de aprendizado, você pode aprender a aplicar políticas, configurações de segurança, caches externos e outros recursos nas funções de um Gateway do Gerenciamento de API. Um gateway fornece a você um ponto de controle central, no qual você pode gerenciar vários microsserviços sem alterar o código.