Fluxos condicionais

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.

É possível criar condições que incluem operadores ||(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 GET HTTP.
  • Adiciona uma política ao novo fluxo.

Como adicionar um fluxo condicional

Para adicionar um fluxo condicional, faça o seguinte:

  1. Selecione a guia Develop no Proxy Editor.
  2. Selecione Proxy endpoints > default no painel à esquerda.

    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.

  3. Clique no botão + acima do painel Resposta.

    Botão para adicionar fluxo condicional

  4. 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

    Botão para adicionar fluxo condicional

    O fluxo condicional só é executado se a solicitação for um GET, mas não para PUT, POST etc.

    O novo fluxo, chamado Flow-1, agora aparece no painel Endpoint de proxy.

    Fluxo condicional exibido em Endpoints de proxy.

  5. O código XML do novo fluxo condicional é exibido no editor de texto.

    Fluxo condicional exibido em Endpoints de proxy.

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:

  1. No painel à esquerda, clique no botão + à direita de Políticas.
  2. 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.
  3. Clique em Criar para criar a política.
  4. Clique no botão + ao lado de Flow-1 no painel Solicitação.

    Clique no botão de adição ao lado de Flow-1 no painel &quot;Solicitação&quot;.

  5. Na caixa de diálogo Adicionar política, clique no campo Selecionar política existente e selecione Cota 1.
  6. Clique em Adicionar.

O painel Solicitação agora exibe o fluxo e a política anexada, Cota-1.

Painel de solicitação mostrando novo fluxo e política de cotas.

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

Fluxo condicional e política de cotas exibidas em 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.

Próximas etapas

Os tópicos a seguir fornecem mais detalhes sobre a construção de condições e o uso de variáveis: