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.

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:

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

    default no painel à esquerda." class="l10n-absolute-url-src screenshot" l10n-attrs-original-order="class,width,alt,src" src="https://cloud.google.com/static/apigee/docs/api-platform/fundamentals/images/proxy-endpoints-default.png" width="35%" />

    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 "Solicitação".

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

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.

Editor de proxy clássico

Para adicionar um fluxo condicional, selecione a guia Desenvolvimento no criador de proxy de API.

Guia "Desenvolvimento" do proxy

Clique em no endpoint desejado.

Botão para adicionar fluxo condicional

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.

No painel &quot;Novo fluxo condicional&quot;, o fluxo é nomeado de &quot;Fluxo-1&quot;, e o tipo de condição,
    o caminho e o verbo são configurados.

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.

Fluxo 1 destacado

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.

No menu do navegador, um exemplo de fluxo condicional denominado está destacado e,
    no painel &quot;Fluxo&quot;, o botão &quot;Etapa&quot; é exibido.

No painel &quot;Adicionar etapa&quot;, uma nova instância de política é criada com o tipo de política Cota e o
    nome de exibição Quota-2.

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: