Bedingte Abläufe

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

In einem bedingten Ablauf werden Richtlinien nur ausgeführt, wenn die Bedingung des Ablaufs true ergibt. Im Gegensatz dazu werden Richtlinien, die dem PreFlow oder PostFlow zugeordnet sind, immer ausgeführt. In diesem Abschnitt wird beschrieben, wie Sie einen bedingten Ablauf erstellen.

Bedingte Abläufe

Während der Verarbeitung einer Anfrage und einer Antwort wird nur ein bedingter Ablauf pro Segment ausgeführt – der erste Ablauf, dessen Bedingung als true ausgewertet wird.

Die folgenden Beispiele veranschaulichen einige Möglichkeiten zur Verwendung bedingter Abläufe.

Beispiel 1

Die folgende ProxyEndpoint-Definition zeigt einen bedingten Ablauf, der vom ProxyEndpoint für jede HTTP GET-Anfrage an den API-Proxy ausgeführt wird:

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

Die Bedingung verweist auf die Ablaufvariable request.verb. Eine Ablaufvariable sind benannte Referenzen, die Zustandsinformationen enthalten, die mit einer von Apigee verarbeiteten API-Transaktion verknüpft sind. Apigee definiert viele Zustandsvariablen, auf die Sie verweisen können.

Beispiel 2

Wenn Ihr Dienst-Backend Wetterberichte und Wettervorhersagen bereitstellt, kann Ihre API zwei bedingte Abläufe definieren, die diesen API-Ressourcen zugeordnet sind: /reports und /forecasts. Wenn ein API-Aufruf eine dieser Ressourcen in der URL enthält, wird die Bedingung als wahr ausgewertet und die Logik, die an den bedingten Ablauf angehängt ist, wird ausgeführt.

Anwendungsentwickler können dann auf Ihre Ressourcen zugreifen mit Anfragen an eine URL im folgenden Format:

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

oder:

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

In einem API-Proxy können Sie einen bedingten Ablauf definieren, der einer bestimmten Ressource entspricht:

<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 diesem Beispiel verweisen Sie auf die Ablaufvariable proxy.pathsuffix, die den Suffix-Teil der URL enthält, die für den Zugriff auf den API-Proxy verwendet wird. Anschließend haben Sie die Möglichkeit, den bedingten Ablauf für jede Ressource mit unterschiedliche Richtlinien zu verknüpfen.

Beispiel: Bedingten Ablauf erstellen

Nächstes Beispiel:

  • Erstellt einen bedingten Ablauf, der nur ausgeführt wird, wenn die Anfragenachricht ein HTTP-GET-Vorgang ist.
  • Fügt dem neuen Ablauf eine Richtlinie hinzu.

Bedingten Ablauf hinzufügen

Neuer Proxy-Editor

So fügen Sie einen bedingten Ablauf hinzu:

  1. Wählen Sie im Proxy-Editor den Tab Entwickeln.
  2. Wählen Sie im linken Bereich Proxy-Endpunkte > Standard.

    Wählen Sie im linken Bereich &quot;Proxy-Endpunkte > Standard&quot; aus.

    Hinweis: Möglicherweise müssen Sie den visuellen Editor im rechten Bereich erweitern, um alle Elemente anzuzeigen. Klicken Sie dazu auf die Trennlinie zwischen dem visuellen Editor und dem Texteditor.

  3. Klicken Sie über dem Bereich + auf die Schaltfläche +.

    Schaltfläche für bedingten Ablauf hinzufügen

  4. Wählen Sie im Dialogfeld Bedingten Ablauf hinzufügen Pfad und Verb aus und geben Sie im Feld Pfad das Pfadsuffix ein, das im Anfragepfad enthalten sein soll, damit der bedingte Ablauf ausgeführt wird. Siehe Beispiel 2 oben

    Schaltfläche für bedingten Ablauf hinzufügen

    Der bedingte Ablauf wird nur ausgeführt, wenn die Anfrage eine GET-Anfrage ist, jedoch nicht für PUT, POST usw.

    Der neue Ablauf mit dem Namen Flow-1 wird jetzt im Bereich Proxy-Endpunkt angezeigt.

    Bedingter Ablauf, der in Proxy-Endpunkten angezeigt wird.

  5. Der XML-Code für den neuen bedingten Ablauf wird im Texteditor angezeigt.

    Bedingter Ablauf, der in Proxy-Endpunkten angezeigt wird.

Bearbeiten Sie bei Bedarf das Element Bedingung. Weitere Informationen finden Sie unter Logik zu Abläufen hinzufügen.

Ablauf mit Richtlinie verknüpfen

Nachdem Sie den bedingten Ablauf erstellt haben, können Sie ihn mit einer Richtlinie verknüpfen. Im nächsten Beispiel wird eine Kontingentrichtlinie hinzugefügt, die die Anzahl der Anfragenachrichten begrenzt, die ein API-Proxy über einen bestimmten Zeitraum zulässt.

  1. Klicken Sie im linken Bereich rechts neben + auf die Schaltfläche +.
  2. Klicken Sie im Dialogfeld Richtlinie erstellen in das Feld Richtlinientyp auswählen und scrollen Sie nach unten zu Trafficverwaltung und wählen Sie Kontingente.
  3. Klicken Sie auf Erstellen, um die Richtlinie zu erstellen.
  4. Klicken Sie im Bereich + neben + auf die Schaltfläche +.

    Im Bereich &quot;Anfrage&quot; neben &quot;Flow-1&quot; auf die Plus-Schaltfläche klicken

  5. Klicken Sie im Dialogfeld Richtlinienschritt hinzufügen in das Feld Vorhandene Richtlinie auswählen und wählen Sie Quota-1 aus.
  6. Klicken Sie auf Hinzufügen.

Im Bereich Anfrage werden jetzt der Ablauf und die verknüpfte Richtlinie Quota-1 angezeigt.

Anfragebereich mit neuem Ablauf und Kontingentrichtlinie.

Im Texteditor wird jetzt ein Schritt mit der Richtlinie Quota-1 im Element Quota-1 der XML angezeigt:

Bedingte Ablauf- und Kontingentrichtlinie, die in XML angezeigt wird

Bei dieser Konfiguration wird die Kontingentrichtlinie für GET-Anfragen erzwungen. Anfragen anderer Typen werden nicht an der maximalen Anzahl von Anfragen in der Kontingentrichtlinie berücksichtigt.

Klassischer Proxy-Editor

Wählen Sie zum Hinzufügen eines bedingten Ablaufs im API-Proxy-Builder den Tab Entwickeln aus.

Tab &quot;Develop&quot; von Proxy Builder

Klicken Sie im gewünschten Endpunkt auf .

Schaltfläche für bedingten Ablauf hinzufügen

Mit dem Formular New Conditional Flow können Sie den Ablauf benennen und eine Bedingung konfigurieren. Im folgenden Beispiel fügen Sie eine einfache Bedingung hinzu, mit der das HTTP der Anfragenachricht für ein GET-Verb (im Gegensatz zu PUT, POST usw.) auf jedem URI nach dem Basispfad ausgewertet wird.

Im Bereich &quot;New Conditional Flow&quot; heißt der Ablauf &quot;Flow-1&quot; und der Bedingungstyp, -Pfad und -Verb sind konfiguriert.

(Unter Bedingungen mit Ablaufvariablen finden sie Informationen zum Erstellen von bedingten Anweisungen.)

Der neue Ablauf mit dem Namen Flow-1 wird jetzt im Navigationsmenü angezeigt.

Flow-1 hervorgehoben

Sehen Sie sich nun die XML-Konfiguration für den ProxyEndpoint an. Wählen Sie im Menü Flow-1 die Option Flow-1 aus.

Die folgende Konfiguration wird angezeigt.

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

Nachdem Sie einen bedingten Ablauf erstellt haben, kann er mit der Richtlinie verknüpft werden. Wählen Sie den Ablauf aus und klicken Sie auf das Symbol + Schritt im Anfrage- oder Antwortdiagramm, um eine neue oder vorhandene Richtlinie zum Ablauf hinzuzufügen.

Im Navigator-Menü ist ein Beispiel für einen bedingten Ablauf mit Namen &quot;issue&quot; hervorgehoben. Im Bereich &quot;Ablauf&quot; wird die Schaltfläche &quot;Schritt&quot; angezeigt.

Im Bereich &quot;Schritt hinzufügen&quot; wird eine neue Richtlinieninstanz mit dem Richtlinientyp &quot;Quota&quot; und dem Anzeigenamen &quot;Quota-2&quot; erstellt.

Durch Verknüpfen der Richtlinie mit dem ausgewählten Ablauf konfigurieren Sie den API-Proxy so, dass die Kontingentrichtlinie nur für Anfragen an diese Kombination aus Ablauf-URI und Verb erzwungen wird. Wenn Sie beispielsweise die Richtlinie mit dem Ablauf learn in der Anfrage verknüpfen, wird die folgende XML-Datei im Texteditor generiert:

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

Wenn bei dieser Konfiguration eine GET-Anfrage im API-Proxy mit dem URI-Muster .../issue/** (/issue/ mit einem beliebigen Wert im URI nach dem letzten Schrägstrich) eingeht, wird das Kontingent für diesen API-Aufruf erzwungen.

Nächste Schritte

In den folgenden Themen finden Sie weitere Informationen zum Erstellen von Bedingungen und zum Verwenden von Variablen: