Flussi condizionali

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

In un flusso condizionale, vengono eseguiti solo se la condizione del flusso true (a differenza dei criteri collegati a PreFlow o PostFlow, che vengono sempre eseguiti). Questa sezione descrive come creare un flusso condizionale.

Informazioni sui flussi condizionali

Durante l'elaborazione di una richiesta e di una risposta, viene eseguito un solo flusso condizionale per di testo: il primo flusso la cui condizione restituisce true.

I seguenti esempi illustrano alcuni modi per utilizzare i flussi condizionali.

Esempio 1

La seguente definizione ProxyEndpoint mostra un flusso condizionale che viene eseguito dal ProxyEndpoint su qualsiasi richiesta HTTP GET al proxy 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>

Tieni presente che la condizione fa riferimento all'elemento request.verb flusso . Una variabile di flusso è costituita da riferimenti denominati che contengono informazioni sullo stato associate con una transazione API elaborata da Apigee. Apigee definisce molte variabili di stato che puoi riferimento.

Esempio 2

Se le tue fornisce previsioni meteo e previsioni meteo, l'API potrebbe definire due Flussi condizionali mappati a quelle API risorse: /reports e /forecasts. Quando una chiamata API include una di queste risorse nell'URL, la condizione restituisce true e la logica collegata al flusso condizionale.

Gli sviluppatori di app accedono quindi alle tue risorse effettuando richieste a un URL nel seguente formato:

http://myAPIs.myCo.com/weather/reports

oppure:

http://myAPIs.myCo.com/weather/forecasts

In un proxy API, puoi definire un flusso condizionale che corrisponde a un risorsa:

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

In questo esempio, fai riferimento alla variabile di flusso proxy.pathsuffix, che contiene la parte del suffisso dell'URL utilizzato per accedere al proxy API. Poi puoi allegare diversi criteri al flusso condizionale per ogni risorsa.

Esempio: creare un flusso condizionale

Nell'esempio successivo:

  • Crea un flusso condizionale che viene eseguito solo quando il messaggio di richiesta è un GET HTTP.
  • Aggiunge un criterio al nuovo flusso.

Aggiunta di un flusso condizionale

Nuovo editor proxy

Per aggiungere un flusso condizionale:

  1. Seleziona la scheda Sviluppo nell'Editor proxy.
  2. Seleziona Endpoint proxy > predefinita nel riquadro a sinistra.

    Seleziona Endpoint proxy > predefinita nel riquadro di sinistra.

    Nota: potrebbe essere necessario espandere l'editor visivo nel riquadro a destra per vedere tutte le elementi. Per farlo, fai clic e trascina il divisore tra l'editor visivo e l'editor di testo un po' meno.

  3. Fai clic sul pulsante + sopra il riquadro Risposta.

    Pulsante Aggiungi flusso condizionale

  4. Nella finestra di dialogo Aggiungi flusso condizionale, seleziona Percorso e verbo e Percorso: inserisci il suffisso del percorso che vuoi inserire nel percorso della richiesta per del flusso condizionale da eseguire. Consulta l'Esempio 2 riportato sopra.

    Pulsante Aggiungi flusso condizionale

    Il flusso condizionale viene eseguito solo se la richiesta viene una richiesta GET (ma non per PUT, POST e così via).

    Il nuovo flusso, denominato Flow-1, viene ora visualizzato nel riquadro Endpoint proxy.

    Flusso condizionale visualizzato negli endpoint proxy.

  5. Il codice XML per il nuovo flusso condizionale viene visualizzato nell'editor di testo.

    Flusso condizionale visualizzato negli endpoint proxy.

Se vuoi, puoi modificare l'elemento Condition. Consulta Aggiunta di logica ai flussi.

Collegamento di un criterio al flusso

Ora che hai creato il flusso condizionale, puoi collegarvi un criterio. L'esempio successivo aggiunge un criterio per le quote, che limita il numero di messaggi di richiesta consentiti da un proxy API un periodo di tempo, al flusso:

  1. Nel riquadro a sinistra, fai clic sul pulsante + a destra di Criteri.
  2. Nella finestra di dialogo Crea criterio, fai clic nel campo Seleziona il tipo di criterio e Scorri verso il basso fino a Gestione del traffico e seleziona Quota.
  3. Fai clic su Crea per creare il criterio.
  4. Fai clic sul pulsante + accanto a Flow-1 nel riquadro Richiesta.

    Fai clic sul pulsante Più accanto a Flow-1 nel riquadro Richiesta.

  5. Nella finestra di dialogo Aggiungi criterio, fai clic sul campo Seleziona criterio esistente e seleziona Quota-1.
  6. Fai clic su Aggiungi.

Il riquadro Richiesta ora mostra il flusso e il criterio associato, Quota-1.

Riquadro di richiesta che mostra il nuovo flusso e il criterio per le quote.

L'editor di testo ora mostra un passaggio contenente il criterio Quota-1 nella Elemento Flow-1 del file XML:

Flusso condizionale e criteri per le quote visualizzati in XML

Con questa configurazione, il criterio per le quote verrà applicato in modo forzato alle richieste GET. Le richieste di altro tipo non contribuiscono al numero massimo di richieste indicate nei criteri per le quote.

Editor proxy classico

Per aggiungere un flusso condizionale, seleziona la scheda Sviluppo nello Strumento per la creazione di proxy API.

Scheda Sviluppo del generatore di proxy

Fai clic su nell'endpoint desiderato.

Pulsante Aggiungi flusso condizionale

Il modulo Nuovo flusso condizionale consente di assegnare un nome al flusso e configurare una condizione. Nella nell'esempio seguente, aggiungi una condizione semplice che valuta l'HTTP del messaggio di richiesta Un verbo GET (anziché PUT, POST e così via) su qualsiasi URI dopo il percorso di base.

Nel riquadro Nuovo flusso condizionale, il flusso è denominato Flow-1 e il tipo di condizione
    percorso e verbo sono configurati.

Scopri come costruire istruzioni condizionali in Condizioni con variabili di flusso.

Il nuovo flusso, chiamato Flow-1, ora viene visualizzato nel menu di navigazione.

Flusso-1 evidenziato

Ora osserva la configurazione XML per ProxyEndpoint. Seleziona Flow-1 nella Menu di navigazione.

Verrà visualizzata la seguente configurazione.

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

Una volta creato, un flusso condizionale è disponibile per il collegamento dei criteri. Con il flusso selezionata, fai clic sull'icona + Passaggio nel diagramma della richiesta o della risposta per aggiungere un nel flusso un criterio nuovo o esistente.

Nel menu di navigazione, è evidenziato un esempio di problema denominato flusso condizionale e
    nel riquadro Flow, viene mostrato il pulsante Step.

Nel riquadro Add Step, viene creata una nuova istanza del criterio con il tipo di criterio Quota e
    nome visualizzato Quota-2.

Se colleghi il criterio al flusso selezionato, configuri il proxy API per l'applicazione forzata Criterio per le quote solo per le richieste inviate a quella combinazione di URI e verbo del flusso. Ad esempio, se collegare il criterio al flusso learn nella richiesta, il seguente XML è generati nell'editor di testo:

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

In questa configurazione, se una richiesta GET arriva sul proxy API con un URI pattern di .../issue/** (/issue/ con qualsiasi cosa nell'URI dopo l'ultimo inoltro barra), la quota viene applicata a quella chiamata API.

Passaggi successivi

Gli argomenti riportati di seguito forniscono ulteriori dettagli sulla costruzione di condizioni e sull'utilizzo variabili: