Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Em um fluxo condicional,
as políticas são executadas apenas se a condição do fluxo é avaliada como
true, diferente das políticas anexadas ao PreFlow ou ao PostFlow,
que são sempre executadas. Nesta seção, descrevemos como criar um fluxo condicional.
Sobre fluxos condicionais
Durante o processamento de uma solicitação e uma resposta, somente um fluxo condicional é executado por
segmento: o primeiro fluxo com uma condição avaliada como true.
||(OR) e &&(AND). No entanto, por padrão, o operador || tem precedência maior que o operador &&. Por exemplo, uma condição escrita
como A && B || C && D é avaliada como A && (B || C) && D. Coloque a expressão entre parênteses se quiser mudar a precedência ao usar esses operadores.
Os exemplos a seguir ilustram algumas maneiras de usar fluxos condicionais.
Exemplo 1
A definição de ProxyEndpoint a seguir mostra um fluxo condicional que é executado
pelo ProxyEndpoint em qualquer solicitação HTTP GET para o 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>Observe que a condição faz referência à
variável de
fluxo request.verb. Uma variável de fluxo é nomeada com referências que armazenam informações de estado associadas
a uma transação de API processada pela Apigee. A Apigee define muitas variáveis de estado que podem ser
referenciadas.
Exemplo 2
Se o
back-end do serviço fornecer relatórios meteorológicos e previsões do tempo, sua API poderá definir dois
fluxos condicionais que mapeiam esses recursos da
API: /reports e /forecasts. Quando uma chamada de 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 desenvolvedores de aplicativos acessam seus recursos fazendo solicitações a um URL no formulário:
http://myAPIs.myCo.com/weather/reports
ou
http://myAPIs.myCo.com/weather/forecasts
Em um proxy de API, defina 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, você faz referência à variável de fluxo proxy.pathsuffix,
que contém a parte do sufixo do URL usado para acessar o proxy de API. Depois, você pode anexar
políticas diferentes ao fluxo condicional para cada recurso.
Exemplo: como criar um fluxo condicional
O próximo exemplo:
- Cria um fluxo condicional executado apenas quando a mensagem de solicitação
é um
GETHTTP. - Adiciona uma política ao novo fluxo.
Como adicionar um fluxo condicional
Apigee no console do Cloud
Para adicionar um fluxo condicional, faça o seguinte:
- Selecione a guia Develop no Proxy Editor.
- Selecione Proxy endpoints > default 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 + acima do painel Resposta.

- Na caixa de diálogo Adicionar fluxo condicional, selecione Caminho e verbo e, no campo Caminho, insira o sufixo de caminho que quer que esteja no caminho da solicitação para que o fluxo condicional seja executado. Veja o Exemplo 2 acima

O fluxo condicional só é executado se a solicitação for um
GET, mas não paraPUT,POSTetc.O novo fluxo, chamado
Flow-1, agora aparece no painel Endpoint de proxy.
O código XML do novo fluxo condicional é exibido no editor de texto.

Você pode editar o elemento Condição, se quiser. Consulte Como adicionar lógica aos fluxos.
Como anexar uma política ao fluxo
Agora que você criou o fluxo condicional, pode anexar uma política a ele. O próximo exemplo adiciona uma política de cotas, que restringe o número de mensagens de solicitação permitidas por um proxy de API durante um período:
- No painel à esquerda, 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 role para baixo até Gerenciamento de tráfego e selecioneCota.
- Clique em Criar para criar a política.
- Clique no botão + ao lado de Flow-1 no painel Solicitação.

- Na caixa de diálogo Adicionar política, clique no campo Selecionar política existente e selecione Cota 1.
- Clique em Adicionar.
O painel Solicitação agora exibe o fluxo e a política anexada, Cota-1.

O editor de texto agora exibe uma etapa que contém a política Quota-1 no elemento Flow-1 do XML:

Com essa configuração, a política de cotas será aplicada para solicitações GET.
As solicitações de outros tipos não contribuem para o número máximo de solicitações na política de cotas.
IU clássica
Para adicionar um fluxo condicional, selecione a guia Desenvolvimento no criador de proxy de API.

Clique em
no endpoint desejado.

O formulário Novo fluxo condicional permite nomear o fluxo e configurar uma condição. No
exemplo a seguir, você adiciona uma condição simples que avalia o HTTP da mensagem de solicitação para um
verbo GET (em oposição a PUT, POST etc.) em qualquer URI depois do caminho base.

Saiba como criar instruções condicionais em Condições com variáveis de fluxo.
O novo fluxo, chamado Flow-1, agora aparece no menu do navegador.

Agora, observe a configuração XML do ProxyEndpoint. Selecione Flow-1 no menu do Navigator.
Você verá 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, ele ficará disponível para o anexo de política. Com o fluxo selecionado, clique no ícone + Etapa no diagrama de solicitação ou resposta para adicionar uma política nova ou atual ao fluxo.


Ao anexar a política ao fluxo selecionado, você configura o proxy de API para impor a política de cotas apenas para solicitações feitas a essa combinação de URI e verbo de fluxo. Por exemplo, se você anexar a política ao fluxo learn na solicitação, o seguinte XML será 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 uma solicitação GET chegar ao proxy de API com um padrão de
URI de .../issue/** (/issue/ com tudo no URI após a última
barra), a cota será aplicada nessa chamada de API.
Próximas etapas
Os tópicos a seguir fornecem mais detalhes sobre a construção de condições e o uso de variáveis: