Exercício – Configurar uma política de cache

Concluído

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:

  1. Na barra de tarefas do Azure, selecione o ícone do Cloud Shell para abrir o Azure Cloud Shell.

    Uma captura de tela do ícone do Cloud Shell na barra de tarefas.

  2. 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
    
  3. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  1. No menu de Recursos do portal do Azure ou na Página inicial, selecione Criar um recurso. O painel Criar um recurso será exibido.

  2. 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.

  3. 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
  4. 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.

  1. 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.

  2. 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.

  3. Na seção Criar com base em definição, escolha OpenAPI. A caixa de diálogo Criar com base na especificação OpenAPI é exibida.

    Captura de tela mostrando como adicionar uma API ao Gerenciamento de API no portal.

  4. Na caixa Especificação OpenAPI, cole a URL do JSON do Swagger que você copiou anteriormente.

    Captura de tela mostrando como configurar uma especificação OpenAPI no portal.

  5. 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.

  1. Selecione a API que você adicionou, selecione a guia Teste e, em seguida, selecione a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.

  2. 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
  3. Selecione Enviar.

    Captura de tela que mostra como testar a API no Gerenciamento de API.

  4. Revise os resultados. Observe que o quotePreparedTime preciso está incluído no conteúdo da resposta HTTP.

    Captura de tela mostrando o carimbo de data/hora do conteúdo no console de teste.

  5. 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.

  1. Selecione a guia Design para sua API e escolha a operação GET – GetPriceEstimate. O painel GetPriceEstimate será exibido.

  2. Na seção Processamento de entrada, selecione + Adicionar política. O painel Adicionar política de entrada será exibido.

    Captura de tela que mostra como adicionar uma política de cache.

  3. Selecione Armazenar respostas em cache. O painel Processamento de entrada será exibido novamente.

  4. Em Armazenar respostas em cache, na caixa Duração em segundos, insira 600. Em seguida, selecione Salvar.

  5. Na seção Processamento de entrada, selecione </>. O editor XML de política será exibido.

  6. Observe que uma marca <cache-lookup> foi adicionada à seção <inbound>. Uma marca <cache-store> também foi adicionada à seção <outbound>.

    Captura de tela que mostra um editor de políticas com políticas de armazenamento em cache.

  7. 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.

  1. 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.

  2. 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

    Captura de tela que mostra como testar a API no Gerenciamento de API.

  3. Selecione Enviar.

  4. Examine os resultados. Observe que o quotePreparedTime preciso está incluído no conteúdo da resposta HTTP.

  5. 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.

  1. Selecione a guia Design para sua API. Em seguida, selecione a operação GET - GetPriceEstimate. O painel GetPriceEstimate será exibido.

  2. Na seção Processamento de entrada, selecione </> para editar a política.

  3. 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>
    
  4. 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:

  1. 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.

  2. 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
  3. Selecione Enviar.

  4. Examine os resultados. Observe que o quotePreparedTime está incluído na resposta.

    Captura de tela mostrando o carimbo de data/hora do conteúdo no console de teste.

  5. 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.

  6. 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
  7. Selecione Enviar.

  8. 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.

  9. 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
  10. Selecione Enviar.

  11. 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.