Como configurar fluxos

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Fluxos são os elementos básicos de proxies de API. Os fluxos permitem que você programe o comportamento de uma API permitindo configurar a sequência em que as políticas e o código são executados por um proxy de API.

Para uma visão geral conceitual dos fluxos, consulte Como controlar a maneira como um proxy é executado com fluxos.

Este tópico descreve como criar fluxos condicionais e adicionar lógica (políticas) aos fluxos em um nível alto. A arte da criação de condições envolve mais detalhes do que o abordado neste tópico. Para saber mais detalhes, consulte Visão geral das variáveis de fluxo e Condições com as variáveis de fluxo.

Como anexar políticas a fluxos

O Edge tem muitos tipos diferentes de políticas predefinidas para implementar segurança, gerenciar tráfego e manipular mensagens. Além disso, as políticas permitem adicionar códigos personalizados para personalizar completamente o processador de mensagens.

Por exemplo:

  • Anexe uma política de segurança OAuth ao PreFlow de solicitação do ProxyEndpoint. Como o PreFlow de solicitação do ProxyEndpoint é o primeiro fluxo no pipeline, é possível rejeitar uma solicitação imediatamente se ela violar suas políticas de segurança.
  • Anexe uma política de conversão de JSON para XML ao PostFlow de resposta do TargetEndpoint para converter uma resposta do JSON para XML.
  • Anexe uma política JavaScript a um Fluxo condicional do ProxyEndpoint para executar o código JavaScript e processar a solicitação

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 "Fluxo", o botão "Etapa" é exibido.

No painel "Adicionar etapa", 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, ao anexar a política ao fluxo aprender na solicitação, o seguinte XML será gerado na visualização do código do editor de proxy:

<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 qualquer elemento no URI após a última barra), a cota será aplicada nessa chamada de API.

Sobre fluxos condicionais

Todas as políticas anexadas ao PreFlow ou PostFlow são sempre executadas. No entanto, as políticas em um fluxo condicional são executadas apenas se a condição do fluxo for avaliada como verdadeira.

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 verdadeira. Isso significa que é possível executar um fluxo condicional como parte de cada um dos seguintes elementos:

  • Pipeline de solicitação do ProxyEndpoint
  • Pipeline de solicitações do TargetEndpoint
  • Pipeline de resposta do ProxyEndpoint
  • Pipeline de resposta do TargetEndpoint

Vídeo: assista um breve vídeo para saber mais sobre fluxos condicionais.

Por exemplo, 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 pelo Edge. O Edge define muitas variáveis de estado que podem ser referenciadas.

Serviços RESTful são coleções de recursos da API. Um recurso de API é um fragmento de caminho de URI que identifica uma entidade que os desenvolvedores podem acessar chamando sua API. Por exemplo, 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.

Como adicionar um fluxo condicional

Neste breve exemplo, configuraremos um fluxo que é executado somente quando a mensagem de solicitação é um HTTP GET.

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

Guia &quot;Desenvolvimento&quot; do proxy

Clique no ícone + 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 Variáveis e condições 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>

Próximas etapas

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