Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Num fluxo condicional,
as políticas são executadas apenas se a condição do fluxo for avaliada como
true
(ao contrário das políticas anexadas ao PreFlow ou PostFlow,
que são sempre executadas). Esta secção descreve como criar um fluxo condicional.
Acerca dos fluxos condicionais
Durante o processamento de um pedido e de uma resposta, apenas é executado um fluxo condicional por segmento, ou seja, o primeiro fluxo cuja condição é avaliada como true
.
||
(OU) e &&
(E). No entanto, por predefinição, o operador ||
tem uma precedência superior ao operador &&
. Por exemplo, uma condição escrita
como A && B || C && D
é avaliada como A && (B || C) && D
. Certifique-se de que coloca a expressão entre parênteses se quiser alterar a precedência quando usar estes operadores.
Os exemplos seguintes ilustram algumas formas de usar fluxos condicionais.
Exemplo 1
A seguinte definição de ProxyEndpoint mostra um fluxo condicional que é executado
pelo ProxyEndpoint em qualquer pedido HTTP GET
ao proxy de API:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Tenha em atenção que a condição faz referência à request.verb
variável flow. Uma variável de fluxo é uma referência com nome que contém informações de estado associadas
a uma transação de API processada pelo Apigee. O Apigee define muitas variáveis de estado que pode referenciar.
Exemplo 2
Se o seu serviço de back-end fornecer relatórios meteorológicos e previsões meteorológicas, a sua API pode definir dois fluxos condicionais que mapeiam esses recursos da API: /reports
e /forecasts
. Quando uma chamada API inclui um desses recursos no URL, a condição é avaliada como verdadeira e a lógica anexada ao fluxo condicional é executada.
Em seguida, os programadores de apps acedem aos seus recursos fazendo pedidos a um URL no seguinte formato:
http://myAPIs.myCo.com/weather/reports
ou:
http://myAPIs.myCo.com/weather/forecasts
Num proxy de API, pode definir um fluxo condicional que corresponda a um recurso específico:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Neste exemplo, faz referência à variável de fluxo proxy.pathsuffix
, que contém a parte do sufixo do URL usado para aceder ao proxy de API. Em seguida, pode anexar
políticas diferentes ao fluxo condicional para cada recurso.
Exemplo: criar um fluxo condicional
O exemplo seguinte:
- Cria um fluxo condicional que é executado apenas quando a mensagem de pedido é um HTTP
GET
. - Adiciona uma política ao novo fluxo.
Adicionar um fluxo condicional
Novo editor de proxy
Para adicionar um fluxo condicional:
- Selecione o separador Desenvolver no editor de proxy.
- Selecione Terminais de proxy > predefinição 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 ligeiramente a barra de divisão entre o editor visual e o editor de texto.
- Clique no botão + acima do painel Resposta.
- Na caixa de diálogo Adicionar fluxo condicional, selecione Caminho e verbo e, no campo
Caminho, introduza o sufixo do caminho que quer que esteja no caminho do pedido para que
o fluxo condicional seja executado. Consulte o Exemplo 2 acima.
O fluxo condicional só é executado se o pedido for um pedido
GET
(mas não paraPUT
,POST
, etc.).O novo fluxo, denominado
Flow-1
, é agora apresentado no painel Ponto final do proxy. O código XML do novo fluxo condicional é apresentado no editor de texto.
Se quiser, pode editar o elemento Condição. Consulte o artigo Adicionar lógica aos fluxos.
Anexar uma política ao fluxo
Agora que criou o fluxo condicional, pode anexar-lhe uma política. O exemplo seguinte adiciona uma política de quotas, que restringe o número de mensagens de pedidos que um proxy de API permite durante um período, ao fluxo:
- No painel do lado esquerdo, clique no botão + à direita de Políticas.
- Na caixa de diálogo Criar política, clique no campo Selecionar tipo de política e desloque a página para baixo até Gestão de tráfego e selecione Quota.
- Clique em Criar para criar a política.
- Clique no botão + junto a Flow-1 no painel Pedido.
- Na caixa de diálogo Adicionar passo de política, clique no campo Selecionar política existente e selecione Quota-1.
- Clique em Adicionar.
O painel Pedido apresenta agora o fluxo e a política anexada, Quota-1.
O editor de texto apresenta agora um passo que contém a política Quota-1 no elemento Flow-1 do XML:
Com esta configuração, a política de quotas é aplicada aos pedidos de GET
.
Os pedidos de outros tipos não contribuem para o número máximo de pedidos na política de quotas.
Editor de proxy clássico
Para adicionar um fluxo condicional, selecione o separador Desenvolver no criador de proxy de API.
Clique em no ponto final pretendido.
O formulário Novo fluxo condicional permite-lhe atribuir um nome ao fluxo e configurar uma condição. No exemplo seguinte, adiciona uma condição simples que avalia o HTTP da mensagem de pedido para um verbo GET
(em oposição a PUT
, POST
, etc.) em qualquer URI após o caminho base.
(Saiba como criar declarações condicionais em condições com variáveis de fluxo.)
O novo fluxo, denominado Flow-1
, é agora apresentado no menu Navigator.
Agora, observe a configuração XML do ProxyEndpoint. Selecione Flow-1 no menu Navegador.
É apresentada a seguinte configuração.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
Depois de criar um fluxo condicional, este fica disponível para associação de políticas. Com o fluxo selecionado, clique no ícone + Passo no diagrama de pedido ou resposta para adicionar uma política nova ou existente ao fluxo.
Ao anexar a política ao fluxo selecionado, está a configurar o proxy de API para aplicar a política de quota apenas a pedidos feitos a essa combinação de URI e verbo de fluxo. Por exemplo, se anexar a política ao fluxo learn no pedido, o seguinte XML é gerado no editor de texto:
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
Nesta configuração, se um pedido GET
for recebido no proxy de API com um padrão de URI .../issue/** (/issue/ com qualquer coisa no URI após a última barra
invertida), a quota é aplicada a essa chamada de API.
Passos seguintes
Os seguintes tópicos fornecem mais detalhes sobre a criação de condições e a utilização de variáveis: