Exercício – Configurar uma política de cache
Ao gerenciar APIs com o Gerenciamento de API do Azure, é possível modificar o comportamento da API sem precisar reescrever o código usando políticas. Para armazenar em cache as respostas da API, você usa as políticas de cache do Gerenciamento de API.
Como desenvolvedor de uma empresa de jogos de tabuleiro, você decide implementar o cache em uma API de Jogos de Tabuleiro. Primeiro, você precisa adicionar a API ao Gerenciamento de API. Em seguida, você escreve suas políticas de cache. Faremos as duas coisas neste exercício.
Importante
É preciso ter uma assinatura do Azure para fazer esse exercício, e isso pode gerar encargos. Caso ainda não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.
Observação
Neste exercício, a API Web de Jogos de Tabuleiro está hospedada no domínio azurewebsites.net. A instância do Gerenciamento de API está no domínio azure-api.net.
Criar uma API Web no Serviço de Aplicativo do Azure
Para criar uma API Web do Serviço de Aplicativo do Azure, siga estas etapas:
Na barra de tarefas do Azure, selecione o ícone do Cloud Shell para abrir o Azure Cloud Shell.
Clone a API Web de exemplo executando o seguinte comando:
git clone https://github.com/MicrosoftDocs/mslearn-improve-api-performance-with-apim-caching-policy.git
Configure a API Web executando estes comandos:
cd mslearn-improve-api-performance-with-apim-caching-policy bash setup.sh
O setup.sh tem sete partes que levam vários minutos para serem executadas. Quando isso for concluído, três URLs serão exibidas:
- Uma URL de teste para testar a API Web
- Uma URL do Swagger para a interface do usuário do Swagger
- Uma URL do JSON do Swagger para a definição OpenAPI
Anote essas URLs. Nós as usaremos na próxima tarefa.
Testar a API Web recém-implantada
Uma vez que a API Web esteja criada com êxito no Cloud Shell, você poderá testá-la. Execute um teste enviando uma solicitação GET no navegador ou verificando a definição OpenAPI. Esse teste é executado na API Web no domínio azurewebsites.net antes de ser adicionado ao Gerenciamento de API.
No menu Recurso do portal do Azure ou na página Inicial, selecione Todos os recursos. Em seguida, selecione o recurso Serviço de Aplicativo. O painel do Serviço de Aplicativo do BoardGamingAPI123aa456789 é exibido. Os números no final serão diferentes em sua implementação.
Na barra de comandos da guia Visão Geral, como um teste, selecione Procurar. Observe a mensagem de erro. O navegador exibe a mensagem "Nenhuma página da Web encontrada para este endereço". Isso ocorre porque a API Web não implementa uma interface do usuário da Web.
Em uma nova guia do navegador, copie a URL de teste da API Web que você copiou anteriormente e selecione Enter. O navegador exibe a resposta no formato JSON. Observe que o resultado inclui a hora do servidor com o rótulo quotePreparedTime.
Em outra guia do navegador, copie a URL do Swagger que você copiou anteriormente e selecione Enter. O navegador exibe a página do Swagger da sua API de Jogos de Tabuleiro. Deixe esta guia do navegador aberta para uso posterior.
Em uma terceira guia do navegador, cole a URL do JSON do Swagger que você copiou anteriormente. O navegador exibirá a especificação de OpenAPI no formato JSON.
Deixe essas guias abertas. Eles serão úteis mais tarde.
Criar uma instância do Gerenciamento de API
Agora que temos uma API funcional, vamos configurar o Gerenciamento de API. Para este módulo, usaremos a camada Básica v2 para Gerenciamento de API, que foi projetada para cenários de desenvolvimento e teste e fornece um cache interno. (Como opção, você também pode configurar um cache externo.) O Azure configura instâncias de Gerenciamento de API para essa camada em apenas um minuto ou mais.
No menu de Recursos do portal do Azure ou na Página inicial, selecione Criar um recurso. O painel Criar um recurso será exibido.
No menu Criar um recurso, selecione Integração e, em seguida, Gerenciamento de API na lista de resultados. O painel Criar serviço do Gerenciamento de API será exibido.
Insira os valores a seguir para cada configuração na guia Básico.
Configuração Valor Detalhes do projeto Subscription Selecione sua assinatura. Resource group Selecione um grupo de recursos novo ou existente. Um grupo de recursos consiste em um contêiner lógico que armazena os recursos relacionados de uma solução do Azure. Detalhes da instância Região Escolha uma região em que você possa implantar uma instância básica v2. Exemplo: South Central US Nome do recurso Escolha um nome exclusivo. Anote-o. Você precisará dele mais tarde. Nome da organização BoardGames Email do administrador O endereço de email para receber todas as notificações do sistema. Tipo de preços Tipo de preço Básico v2 Selecione Examinar + criar para validar a entrada e escolha Criar.
Adicionar sua API ao Gerenciamento de API
Devemos aplicar uma política para habilitar o cache de respostas de API. No entanto, para aplicar uma política, é necessário adicionar a API à instância do Gerenciamento de API.
No menu do portal do Azure ou na Página Inicial, selecione Todos os recursos. Em seguida, selecione o serviço Gerenciamento de API que você criou anteriormente.
Na navegação à esquerda, em APIs, selecione APIs. O painel APIs será exibido para o serviço de Gerenciamento de API. Ele oferece vários modelos para você escolher.
Na seção Criar com base em definição, escolha OpenAPI. A caixa de diálogo Criar com base na especificação OpenAPI é exibida.
Na caixa Especificação OpenAPI, cole a URL do JSON do Swagger que você copiou anteriormente.
Selecione Criar. O painel APIs do serviço Gerenciamento de API será exibido novamente. Ele listará todas as operações de API disponíveis para essa instância de gerenciamento.
Testar a API no Gerenciamento de API
Agora, a API será adicionada à instância de gerenciamento. Vamos testar como a API funciona antes que as políticas sejam aplicadas.
Selecione a API que você adicionou, selecione a guia Teste e, em seguida, selecione a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.
Use os valores a seguir como Parâmetros de modelo e Parâmetros de consulta.
NOME VALOR ShippingCode usa Game xadrez Altura 8 Largura 8 Selecione Enviar.
Revise os resultados. Observe que o
quotePreparedTime
preciso está incluído no conteúdo da resposta HTTP.Selecione Enviar para repetir a solicitação. Observe que o tempo no conteúdo da resposta HTTP foi alterado.
Adicionar uma política de cache
Agora, é possível habilitar o cache adicionando políticas de cache de resposta.
Selecione a guia Design para sua API e escolha a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.
Na seção Processamento de entrada, selecione + Adicionar política. O painel Adicionar política de entrada será exibido.
Selecione Armazenar respostas em cache. O painel Processamento de entrada será exibido novamente.
Em Armazenar respostas em cache, na caixa Duração em segundos, insira 600. Em seguida, selecione Salvar.
Na seção Processamento de entrada, selecione </>. O editor XML de política será exibido.
Observe que uma marca
<cache-lookup>
foi adicionada à seção<inbound>
. Uma marca<cache-store>
também foi adicionada à seção<outbound>
.Selecione Salvar.
Testar o cache
Executaremos na API o mesmo teste que executamos na seção anterior, dentro do Gerenciamento de API. Em seguida, examinaremos os resultados.
No painel APIs do serviço Gerenciamento de API, selecione a guia Testar e escolha a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.
Use os valores a seguir como Parâmetros de modelo e Parâmetros de consulta.
NOME VALOR ShippingCode usa Game xadrez Altura 8 Largura 8 Selecione Enviar.
Examine os resultados. Observe que o
quotePreparedTime
preciso está incluído no conteúdo da resposta HTTP.Selecione Enviar para repetir a solicitação. Observe que o valor
quotePreparedTime
na resposta ainda é o mesmo. Isso ocorre porque uma resposta armazenada em cache foi enviada.
Configurar o cache para variar os resultados com base nos parâmetros de consulta
Configuraremos o cache para atender a preços exclusivos com base no parâmetro de consulta Height. A Largura do tabuleiro não é usada para calcular o custo, portanto, ela não será configurada.
Selecione a guia Design para sua API. Em seguida, selecione a operação GET - GetPriceEstimate. O painel GetPriceEstimate será exibido.
Na seção Processamento de entrada, selecione </> para editar a política.
Substitua toda a marca
<cache-lookup>
pelo seguinte XML:<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none"> <vary-by-query-parameter>height</vary-by-query-parameter> </cache-lookup>
Selecione Salvar.
Testar a nova configuração de cache
O cache agora deve fornecer respostas exclusivas com base no parâmetro de consulta Altura. Como o parâmetro Largura não afeta o custo, uma resposta armazenada em cache será usada mesmo quando a largura for alterada. Vamos testar:
No painel APIs do serviço Gerenciamento de API, selecione a guia Testar e escolha a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.
Use os valores a seguir como Parâmetros de modelo e Parâmetros de consulta.
NOME VALOR ShippingCode usa Game xadrez Altura 8 Largura 8 Selecione Enviar.
Examine os resultados. Observe que o
quotePreparedTime
está incluído na resposta.Selecione Enviar para repetir a solicitação. Observe que, assim como antes, o valor temporal na resposta não foi alterado. Isso ocorre porque uma resposta armazenada em cache foi enviada.
Para testar o parâmetro Altura, use os valores a seguir como Parâmetros de modelo e Parâmetros de consulta.
NOME VALOR ShippingCode usa Game xadrez Altura 100 Largura 8 Selecione Enviar.
Examine o resultado. Desta vez, o resultado é atualizado e alterado. O cache não foi usado porque o parâmetro de consulta Altura foi alterado na solicitação. Essa resposta é a correta para a API.
Vamos testar o parâmetro Largura. Use os valores a seguir como Parâmetros de modelo e Parâmetros de consulta.
NOME VALOR ShippingCode usa Game xadrez Altura 100 Largura 500 Selecione Enviar.
Examine o resultado. Desta vez, embora o parâmetro de consulta Largura seja diferente, o resultado não foi alterado. Isso ocorre porque uma resposta armazenada em cache foi enviada.