Flussi condizionali

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

In un flusso condizionale, le policy vengono eseguite solo se la condizione del flusso restituisce true (a differenza delle policy associate a PreFlow o PostFlow, che vengono sempre eseguite). 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 segmento: il primo flusso la cui condizione restituisce true.

Puoi creare condizioni che includono gli operatori ||(OR) e &&(AND). Tuttavia, per impostazione predefinita, l'operatore || ha una precedenza maggiore rispetto all'operatore &&. Ad esempio, una condizione scritta come A && B || C && D viene valutata come A && (B || C) && D. Assicurati di mettere tra parentesi l'espressione se vuoi modificare la precedenza quando utilizzi questi operatori.

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

Esempio 1

La seguente definizione di ProxyEndpoint mostra un flusso condizionale eseguito da 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>

Nota che la condizione fa riferimento alla variabile di flusso request.verb . Una variabile di flusso è un riferimento denominato che contiene informazioni sullo stato associate a una transazione API elaborata da Apigee. Apigee definisce molte variabili di stato a cui puoi fare riferimento.

Esempio 2

Se il backend di servizio fornisce report e previsioni meteo, l'API potrebbe definire due flussi condizionali che mappano queste risorse API: /reports e /forecasts. Quando una chiamata API include una di queste risorse nell'URL, la condizione restituisce il valore true e la logica associata al flusso condizionale viene eseguita.

Gli sviluppatori di app accedono quindi alle tue risorse inviando richieste a un URL nel 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 una risorsa specifica:

<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. Puoi quindi allegare norme diverse al flusso condizionale per ogni risorsa.

Esempio: creare un flusso condizionale

Il prossimo esempio:

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

Aggiunta di un flusso condizionale

Nuovo editor proxy

Per aggiungere un flusso condizionale:

  1. Seleziona la scheda Sviluppa nell'editor proxy.
  2. Seleziona Endpoint proxy > predefinito nel riquadro a sinistra.

    Seleziona Endpoint proxy > predefinito nel riquadro a sinistra.

    Nota:per visualizzare tutti gli elementi, potrebbe essere necessario espandere l'editor visuale nel riquadro a destra. Per farlo, fai clic e trascina leggermente verso il basso la barra di divisione tra l'editor visivo e l'editor di testo.

  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, nel campo Percorso, inserisci il suffisso del percorso che vuoi che sia nel percorso della richiesta affinché il flusso condizionale venga eseguito. Vedi l'Esempio 2 riportato sopra.

    Pulsante Aggiungi flusso condizionale

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

    Il nuovo flusso, chiamato 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 Condizione. Consulta Aggiungere la logica ai flussi.

Collegamento di un criterio al flusso

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

  1. Nel riquadro a sinistra, fai clic sul pulsante + a destra di Norme.
  2. Nella finestra di dialogo Crea criterio, fai clic sul campo Seleziona tipo di criterio e scorri verso il basso fino a Gestione del traffico e seleziona Quota.
  3. Fai clic su Crea per creare la policy.
  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 Passaggio 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 la norma allegata, Quota-1.

Il riquadro Richiesta mostra il nuovo flusso e le norme relative alla quota.

L'editor di testo ora mostra un passaggio contenente la norma Quota-1 nell'elemento Flow-1 dell'XML:

Flusso condizionale e criterio relativo alle quote visualizzati in XML

Con questa configurazione, il criterio per le quote verrà applicato alle richieste GET. Le richieste di altri tipi non contribuiranno al numero massimo di richieste nei criteri per le quote.

Editor proxy classico

Per aggiungere un flusso condizionale, seleziona la scheda Sviluppa nel builder proxy API.

Scheda Sviluppo dello strumento per la creazione di proxy

Fai clic su nell'endpoint desiderato.

Pulsante Aggiungi flusso condizionale

Il modulo Nuovo flusso condizionale ti consente di assegnare un nome al flusso e configurare una condizione. Nell'esempio seguente, aggiungi una semplice condizione che valuta l'HTTP del messaggio di richiesta per 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,
    il percorso e il verbo sono configurati.

(Scopri come creare istruzioni condizionali in Condizioni con variabili di flusso.)

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

Flow-1 evidenziato

Ora osserva la configurazione XML per ProxyEndpoint. Seleziona Flusso 1 nel menu Navigatore.

Vedrai 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, questo è disponibile per l'allegato delle policy. Con il flusso selezionato, fai clic sull'icona + Passaggio nel diagramma della richiesta o della risposta per aggiungere una norma nuova o esistente al flusso.

Nel menu Navigatore, viene evidenziato un flusso condizionale di esempio denominato problema e
    nel riquadro Flusso viene visualizzato il pulsante Passaggio.

Nel riquadro Aggiungi passaggio, viene creata una nuova istanza della policy con il tipo di policy Quota e
    il nome visualizzato Quota-2.

Se colleghi il criterio al flusso selezionato, configuri il proxy API in modo che applichi i criteri per le quote solo alle richieste effettuate alla combinazione di URI e verbo del flusso. Ad esempio, se colleghi la policy al flusso learn nella richiesta, il seguente codice XML viene generato 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 arriva una richiesta GET sul proxy API con un pattern URI di .../issue/** (/issue/ con qualsiasi elemento nell'URI dopo l'ultima barra), la quota viene applicata a questa chiamata API.

Passaggi successivi

I seguenti argomenti forniscono maggiori dettagli sulla creazione di condizioni e sull'utilizzo di variabili: