Etapa 5: adicionar uma política

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Agora que você alterou o endpoint de destino, já pode adicionar uma política ao seu proxy.

Uma política é um componente da Apigee que pode ser anexado a vários pontos no fluxo de mensagem pelos proxies de API. As políticas podem transformar formatos de mensagem, aplicar o controle de acesso, chamar serviços remotos, autorizar usuários, examinar o conteúdo das mensagens para detectar possíveis ameaças e fazer muito mais.

Neste tutorial, você adicionará a política XMLtoJSON ao seu proxy. Essa política converte o payload de uma mensagem XML para JSON. Ele também altera o cabeçalho Content-Type da resposta.

Você pode anexar uma política a um fluxo no proxy. Os fluxos controlam como as políticas são executadas. Neste exemplo, você adicionará a política a um fluxo especial chamado Pré-fluxo. As políticas no Pré-fluxo são executadas antes de qualquer outra política no proxy. Embora você não precise entender os fluxos em detalhes para ler este exemplo, saiba mais sobre eles em Como controlar proxies de API com fluxos.

Novo Editor de Proxy

Há duas etapas para adicionar a política XMLtoJSON ao proxy:

Criar uma instância da política

Para usar uma política, primeiro é necessário criar uma nova instância da política a partir do modelo de política, da seguinte maneira:

  1. Se você estiver usando a interface da Apigee no console do Cloud: selecione Desenvolvimento de proxy > Proxies de API.

    Se você estiver usando a interface clássica da Apigee: selecione Desenvolver > Proxies de API e, no painel Proxies, selecione o ambiente do proxy.

  2. Na lista de proxies, selecione o proxy em que você quer adicionar a política.
  3. Clique na guia Desenvolver.

  4. No painel à esquerda, clique no botão + ao lado da pasta Políticas.
  5. Na caixa de diálogo Criar política, clique no campo Selecionar tipo de política, role para baixo até Mediação e selecione XML para JSON.

  6. Também é possível alterar o Nome e o Nome de exibição da política. Por padrão, a Apigee fornece um prefixo curto para o nome da política. Neste caso, X2J-, é possível adicionar uma sequência de palavras descritivas separadas por traços, após o prefixo. Consulte as convenções de nomenclatura.

    Caixa de diálogo "Criar política".

    Quando terminar, clique em Criar para criar a política.

A política XML para JSON agora é exibida no painel direito da visualização Desenvolver:

Política de XML para JSON exibida na visualização de desenvolvimento.

A metade inferior do painel mostra o código XML da política.

Para saber mais sobre a política, selecione o ícone de informações Ícone de informações ao lado do nome da política e clique em Política de XML para JSON. A página de referência da política será exibida.

Mudar o nome da política

Para mudar o nome de uma política:

  1. Selecione a política em Políticas no painel à esquerda.
  2. No elemento <DisplayName> do código XML da política, adicione uma frase descritiva, como change-xml-to-json, depois da abreviação do nome da política:

    Adicione change-xml-to-json ao nome da política.

    Isso atualiza automaticamente o nome da política exibido em Políticas.

    Consulte as convenções de nomenclatura.

Anexar a política a uma etapa do Pré-fluxo

Agora que você criou a política XML para JSON, pode anexá-la a uma etapa no Pré-fluxo:

  1. Selecione Endpoints de Proxy > padrão > Pré-fluxo no painel à esquerda:

    Os endpoints de destino do Pré-fluxo são selecionados no explorador de Proxy.

    Observação: talvez seja necessário expandir o editor visual no painel à direita para ver todos os elementos. Para fazer isso, clique e arraste um pouco o divisor entre o editor visual e o editor de texto.

  2. Clique no botão + ao lado de PreFlow no painel Response no canto inferior direito do Editor de recursos visuais:

    Clique no botão "+" ao lado de "PreFlow" no painel "Response".

  3. Na caixa de diálogo Adicionar etapa de política, selecione a política X2J-change-xml-to-json.
  4. Clique em Adicionar para anexar a política.

    A política X2J-change-xml-to-json agora é exibida no painel Resposta:

    Política de XML para JSON exibida no painel "Resposta".

  5. Clique em Save para salvar a revisão atual com as alterações.
  6. Para implantar as alterações na revisão, clique em Implantar e siga as instruções Implantar um proxy de API.

Editor de Proxy clássico

Para adicionar a política XMLtoJSON ao seu proxy:

  1. Abra a IU da Apigee em um navegador e faça login.
  2. Clique em Proxies de API na janela principal e selecione um proxy. Para este exemplo, selecione o proxy que você criou na Etapa 2: criar um proxy de API.
  3. Clique na guia Desenvolver:

    Selecione a guia Develop no Proxy Editor.

    A Apigee exibe a API Proxy Editor.

  4. No painel Navigator, clique em Endpoints de proxy > padrão > PreFlow:

    A Apigee exibe o Editor de fluxo:

    Editor de fluxo.

    Além disso, a Apigee exibe a configuração padrão do endpoint de proxy no painel Código:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
      <Description/>
      <FaultRules/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <Flows/>
      <HTTPProxyConnection>
        <BasePath>/myproxy</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. Para adicionar uma política ao seu proxy, clique no botão + Etapa na resposta pré-fluxo (a metade inferior do Editor de fluxo):

    + Botão "Step" na resposta PreFlow.

    A Apigee exibe uma lista categorizada de políticas na caixa de diálogo Adicionar que pode ser adicionada ao fluxo:

    Lista de políticas.

  6. Role para baixo e selecione a política XMLtoJSON na categoria "Mediação".
  7. Mantenha os nomes padrão e clique em Adicionar.

    A Apigee anexa a nova política ao PreFlow da resposta:

    Nova política anexada no pré-fluxo da resposta.

    Quando você clica em Adicionar, a Apigee faz o seguinte:

    • Adiciona a nova política em Políticas no painel Navegador.
    • Adiciona a política XMLtoJSON no painel Fluxo.
    • Exibe o XML de configuração da política no painel Código.
  8. Clique em Save para salvar a revisão atual com as alterações.
  9. Para implantar as alterações, clique na guia Visão geral e clique no botão Implantar.

Testar a nova política

Para testar a nova política, execute o seguinte comando curl em uma janela de terminal:

curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy

em que YOUR ENV_GROUP_HOSTNAME é o nome do host do grupo de ambiente. Consulte Encontrar o nome do host do grupo de ambientes.

Consulte Chamar o proxy de API para mais informações.

Também é possível abrir o mesmo URL em um navegador.

Você receberá a seguinte resposta:

{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

Se o corpo da resposta não tiver esta aparência, verifique se:

  1. O endpoint de destino é https://mocktarget.apigee.net/xml, conforme descrito na Etapa 4: alterar o endpoint de destino:
    • Se você receber Hello, Guest! como resposta, será necessário anexar /xml ao final do endpoint de destino.
    • Se você receber um 404, verifique se está acessando apigee.net, e não apigee.com.
  2. A revisão mais recente do seu proxy está implantada. Tente reimplantar seu proxy de API conforme descrito em Como implantar um proxy de API e Como cancelar a implantação de um proxy de API.

Para ver os cabeçalhos de solicitação e resposta HTTP, ative o nível de detalhes em curl com a opção -vs (v torna a resposta detalhada, mas s suprime alguns dos detalhes menos interessantes). No exemplo a seguir, pressupomos que o proxy seja chamado de myproxy:

curl -vs https://YOUR_ENV_GROUP_HOSTNAME/myproxy  | python -m json.tool

Você verá uma resposta semelhante a esta. Observe que o cabeçalho Content-Type na resposta é application/json. A política XMLtoJSON altera o cabeçalho antes de enviar a resposta de volta.

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to apitest.acme.com (10.20.30.40) port 443 (#0)
...
> GET /myproxy HTTP/1.1
> Host: apitest.acme.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 25 May 2018 16:20:00 GMT
< Content-Type: application/json;charset=UTF-8
< Content-Length: 77
< Connection: keep-alive
< X-Powered-By: Apigee
< Access-Control-Allow-Origin: *
...
{ [77 bytes data]
{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

Próxima etapa

Vá além