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
.
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
GET
HTTP. - Adiciona uma política ao novo fluxo.
Como adicionar um fluxo condicional
Novo Editor de proxy
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
,POST
etc.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 Quota-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.
Editor de proxy clássico
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 Flow-1.
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: