Configurazione dei flussi

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

I flussi sono i componenti di base dei proxy API. I flussi ti consentono di programmare il comportamento di un'API configurando la sequenza in cui i criteri e il codice vengono eseguiti da un proxy API.

Per una panoramica concettuale dei flussi, consulta Controllare l'esecuzione di un proxy con i flussi.

Questo argomento descrive come creare flussi condizionali e aggiungere logica (criteri) ai flussi a un livello elevato. L'arte di creare condizioni comporta maggiori dettagli rispetto a quelli trattati in questo argomento. Per questi dettagli, consulta Panoramica delle variabili di flusso e Condizioni con variabili di flusso.

Collegare criteri ai flussi

Edge include molti tipi diversi di criteri predefiniti per implementare la sicurezza, gestire il traffico e manipolare i messaggi. Inoltre, i criteri ti consentono di aggiungere il tuo codice personalizzato per personalizzare completamente l'elaborazione dei messaggi.

Ad esempio:

  • Collega un criterio di sicurezza OAuth a PreFlow della richiesta di ProxyEndpoint. Poiché il PreFlow della richiesta di ProxyEndpoint è il primo flusso nella pipeline, puoi rifiutare immediatamente una richiesta se viola le tue policy di sicurezza.
  • Collega un criterio di conversione da JSON a XML a PostFlow della risposta di TargetEndpoint per convertire una risposta da JSON a XML.
  • Collega un criterio JavaScript a un flusso condizionale di ProxyEndpoint per eseguire il codice JavaScript per elaborare la richiesta

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

Nel menu Navigator, viene evidenziato un flusso condizionale di esempio denominato issue 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.

Collegando il criterio al flusso selezionato, configuri il proxy API in modo che applichi il criterio Quota solo alle richieste effettuate alla combinazione di URI e verbo del flusso. Ad esempio, se colleghi il criterio al flusso learn nella richiesta, nel codice XML viene generato il seguente codice XML nella visualizzazione del codice dell'editor del 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>

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.

Informazioni sui flussi condizionali

Tutti i criteri collegati a PreFlow o PostFlow vengono sempre eseguiti. Tuttavia, i criteri in un flusso condizionale vengono eseguiti solo se la condizione del flusso restituisce il valore true.

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 il valore true. Ciò significa che puoi eseguire un flusso condizionale come parte di ciascuno dei seguenti elementi:

  • Pipeline di richiesta di ProxyEndpoint
  • Pipeline di richiesta di TargetEndpoint
  • Pipeline di risposta di ProxyEndpoint
  • Pipeline di risposta di TargetEndpoint

Video: guarda un breve video per scoprire di più sui flussi condizionali.

Ad esempio, la seguente definizione di ProxyEndpoint mostra un flusso condizionale eseguito da ProxyEndpoint su qualsiasi HTTP GET richiesta 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 alla request.verb variabile di flusso. Una variabile di flusso è un riferimento denominato che contiene informazioni sullo stato associate a una transazione API elaborata da Edge. Edge definisce molte variabili di stato a cui puoi fare riferimento.

I servizi RESTful sono raccolte di risorse API. Una risorsa API è un frammento di percorso URI che identifica un'entità a cui gli sviluppatori possono accedere chiamando la tua API. Ad esempio, se il tuo backend del servizio fornisce report meteo e previsioni del tempo, la tua 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 collegata al flusso condizionale viene eseguita.

Gli sviluppatori di app accedono quindi alle tue risorse effettuando 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 collegare criteri diversi al flusso condizionale per ogni risorsa.

Aggiungere un flusso condizionale

In questo breve esempio, configurerai un flusso che viene eseguito solo quando il messaggio di richiesta è un HTTP GET.

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

Scheda Sviluppo dello strumento di creazione dei proxy

Fai clic sull'icona + 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 Variabili e condizioni di flusso.)

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

Flow-1 evidenziato

Ora osserva la configurazione XML di ProxyEndpoint. Seleziona Flow-1 nel Navigatore menu.

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>

Passaggi successivi

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