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 PreFlow. 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:
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.
- Na lista de proxies, selecione o proxy em que você quer adicionar a política.
Clique na guia Desenvolver.
- No painel à esquerda, clique no botão + ao lado da pasta Políticas.
- Na caixa de diálogo Criar política, selecione Políticas padrão para filtrar a lista de políticas disponíveis por tipo de política.
- Na caixa de texto Selecionar tipo de política, role para baixo até Mediação e selecione XML para JSON.
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.
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:
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 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.
Use o Gemini Code Assist para consultar as instruções da política
Se você tiver o complemento Gemini Code Assist, poderá destacar um elemento de política para conferir informações sobre ele e como usá-lo. Consulte Usar a explicação do código do Gemini Code Assist com políticas para mais informações.
Mudar o nome da política
Para mudar o nome de uma política:
- Selecione a política em Políticas no painel à esquerda.
- 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:
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:
- Selecione Endpoints de Proxy > padrão > Pré-fluxo no
painel à esquerda:
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.
- Clique no botão + ao lado de PreFlow no painel Response no canto inferior direito do Editor de recursos visuais:
- Na caixa de diálogo Adicionar etapa de política, selecione a política X2J-change-xml-to-json.
Clique em Adicionar para anexar a política.
A política X2J-change-xml-to-json agora é exibida no painel Resposta:
- Clique em Save para salvar a revisão atual com as alterações.
- 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:
- Abra a IU da Apigee em um navegador e faça login.
- 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.
Clique na guia Desenvolver:
A Apigee exibe a API Proxy Editor.
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>
- 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:
- Role para baixo e selecione a política XMLtoJSON na categoria "Mediação".
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.
- Clique em Save para salvar a revisão atual com as alterações.
- 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:
- 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á acessandoapigee.net
, e nãoapigee.com
.
- Se você receber
- 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" } }