Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
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 vem com muitos tipos diferentes de políticas predefinidas para implementar a segurança, gerenciar o tráfego e manipular mensagens. Além disso, as políticas permitem adicionar códigos personalizados para personalizar completamente o processador de mensagens.
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 no proxy de API com um padrão de URI de .../issue/** (/issue/ com algo no URI após a última barra), a cota será aplicada a essa chamada.
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 é chamada de referências que contêm 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 de navegação.
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: