Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Agora que alterou o ponto final de destino, já pode adicionar uma política ao seu proxy.
Uma política é um componente do Apigee que pode anexar a diferentes pontos no fluxo de mensagens através dos seus proxies de API. As políticas podem transformar formatos de mensagens, aplicar o controlo de acesso, chamar serviços remotos, autorizar utilizadores, examinar o conteúdo das mensagens para detetar potenciais ameaças e muito mais.
Neste tutorial, vai adicionar a política XMLtoJSON ao seu proxy. Esta política
converte o payload de uma mensagem XML em JSON. Também altera o cabeçalho Content-Type
da resposta.
Pode anexar uma política a um fluxo no proxy. Os fluxos controlam a forma como as políticas são executadas. Neste exemplo, vai adicionar a política a um fluxo especial denominado PreFlow. As políticas no PreFlow são executadas antes de quaisquer outras políticas no proxy. Embora não precise de compreender os fluxos em detalhe para ler este exemplo, pode saber mais sobre eles em Controlar proxies de API com fluxos.
Adicione a política
Adicione a política XMLtoJSON ao seu proxy.
Apigee na Cloud Console
Existem dois passos para adicionar a política XMLtoJSON ao seu proxy:
Crie uma instância da política
Para usar uma política, primeiro tem de criar uma nova instância da política a partir do modelo de política da seguinte forma:
-
Na Google Cloud consola, aceda à página Desenvolvimento de proxy > Proxies de API.
- Na lista de proxies, selecione o proxy ao qual quer adicionar a política.
Clique no separador Desenvolver.
- No painel do lado esquerdo, clique no botão + junto à 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, desloque a página para baixo até Mediação e selecione XML para JSON.
Opcionalmente, pode alterar o Nome e o Nome a apresentar da política. Por predefinição, o Apigee fornece um prefixo curto para o nome da política, neste caso, X2J-. Pode adicionar uma sequência de palavras descritivas separadas por travessões 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 apresentada no painel do lado direito da vista Desenvolver:
A metade inferior do painel apresenta o código XML da política.
Para saber mais sobre a política, selecione o ícone de informações
junto ao nome da política
e clique em
Política de XML para JSON. Esta ação apresenta a página de referência da política.
Use o Gemini Code Assist para rever as instruções das políticas
Pode usar o Gemini Code Assist na IU para saber mais sobre os elementos das políticas. Consulte o artigo Use a explicação de código do Gemini Code Assist com políticas para obter informações.
Altere o nome da política
Para alterar o nome de uma política:
- Selecione a política em Políticas no painel do lado esquerdo.
- No elemento <DisplayName> no código XML da política,
adicione uma expressão descritiva para a política, como change-xml-to-json,
após a abreviatura do nome da política:
Isto atualiza automaticamente o nome da política, apresentado em Políticas.
Consulte Convenções de nomenclatura.
Anexe a política a um passo no PreFlow
Agora que criou a política XML para JSON, pode anexá-la a um passo no PreFlow:
- Selecione Proxy Endpoints > default > PreFlow no painel do lado esquerdo:
Nota: pode ter de expandir o editor visual no painel do lado direito para ver todos os elementos. Para o fazer, clique e arraste a barra de divisão entre o editor visual e o editor de texto um pouco para baixo.
- Clique no botão + junto a PreFlow no painel Resposta
na parte inferior direita do editor visual:
- Na caixa de diálogo Adicionar passo 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 apresentada no painel Resposta:
- Clique em Guardar para guardar a revisão atual com as suas alterações.
- Para implementar as alterações na revisão, clique em Implementar e siga as instruções em Implemente um proxy de API.
IU do Apigee Classic
Para adicionar a política XMLtoJSON ao seu proxy:
- Abra a IU do Apigee num navegador e inicie sessão.
- Clique em Proxies de API na janela principal e selecione um proxy. Para este exemplo, selecione o proxy que criou no Passo 2: crie um proxy de API.
Clique no separador Desenvolver:
O Apigee apresenta o editor de proxy de API.
No painel Navigator, clique em Proxy Endpoints > default > PreFlow:
O Apigee apresenta o editor de fluxo:
Além disso, o Apigee apresenta a configuração do Proxy Endpoint predefinida 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 + Passo no
PreFlow de resposta (a metade inferior do editor de fluxo):
O Apigee apresenta uma lista categorizada de políticas na caixa de diálogo Adicionar que pode adicionar ao seu fluxo:
- Desloque a página para baixo e selecione a política XMLtoJSON na categoria Mediação.
Deixe os nomes predefinidos e clique em Adicionar.
O Apigee anexa a nova política ao PreFlow da resposta:
Tenha em atenção que, quando clica em Adicionar, o Apigee faz o seguinte:
- Adiciona a nova política em Políticas no painel Navegador.
- Adiciona a política XMLtoJSON no painel Fluxo.
- Apresenta o XML de configuração da política no painel Código.
- Clique em Guardar para guardar a revisão atual com as suas alterações.
- Para implementar as alterações, clique no separador Vista geral e, de seguida, no botão Implementar.
Teste a nova política
Para testar a nova política, execute o seguinte comando curl
numa janela de terminal:
curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy
onde YOUR ENV_GROUP_HOSTNAME
é o nome do anfitrião do grupo de ambientes. Consulte
Encontre o nome de anfitrião do grupo de ambientes.
Consulte o artigo Chame o seu proxy de API para mais informações.
Em alternativa, pode abrir o mesmo URL num navegador.
Deve receber a seguinte resposta:
{ "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }
Se o corpo da resposta não tiver este aspeto, verifique se:
- O seu ponto final de destino é
https://mocktarget.apigee.net/xml
, conforme descrito no Passo 4: altere o ponto final de destino:- Se receber
Hello, Guest!
como resposta, tem de acrescentar/xml
ao final do ponto final de destino. - Se receber um erro
404
, verifique se está a aceder aapigee.net
e não aapigee.com
.
- Se receber
- A revisão mais recente do seu proxy está implementada. Experimente voltar a implementar o proxy de API conforme descrito em Implementar um proxy de API e Anular a implementação de um proxy de API.
Para ver os cabeçalhos de pedidos e respostas HTTP, ative a verbosidade em curl
com a opção -vs
(v
torna a resposta detalhada, mas s
suprime alguns dos detalhes menos interessantes). O exemplo seguinte pressupõe que
o proxy tem o nome myproxy
::
curl -vs https://YOUR_ENV_GROUP_HOSTNAME/myproxy | python -m json.tool
Deve receber uma resposta semelhante à seguinte. Tenha em atenção 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" } }