Etapa 5: adicionar uma política

Esta é a documentação da Apigee X.
Veja 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.

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:

    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:

    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):

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

  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:

    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.

Faça um teste. Em uma janela de terminal, execute o seguinte comando curl:

curl https://$EXTERNAL_IP/myproxy

Em que $EXTERNAL_IP é o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Veja mais informações em Configurar o roteamento.

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

Você verá 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 o proxy da API conforme descrito em Como implantar um proxy de API e Como remover um proxy de API.

Para ver os cabeçalhos de solicitação e resposta HTTP, ative o detalhamento em curl com a opção -vs (v torna a resposta detalhada, mas s suprime alguns dos menos menos interessantes detalhes). Por exemplo:

curl -vs https://apitest.acme.com/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