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.
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.
Clique no ícone + 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 Variáveis e condições 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>
Próximas etapas
Os tópicos a seguir fornecem mais detalhes sobre a construção de condições e o uso de variáveis: