Einführung in HTTP-Trigger

Prozessentwicklung

Ossi Galkin avatarGeschrieben vonOssi Galkin Vor über einer Woche aktualisiertTable of contents

HTTP-Trigger

Ein HTTP-Trigger wird verwendet, wenn Sie einen Prozess mit HTTP- oder HTTPS-Anfragen auslösen möchten. Der HTTP-Endpunkt wird vom Frends-Agenten gehostet, der die HttpListener-Schnittstellen des Betriebssystems verwendet. Der Agent kann so konfiguriert werden, dass er auf mehreren Ports auf Anfragen wartet. Jeder gehostete HTTP-Trigger hat seinen eigenen Pfad, um nur den spezifischen Prozess auszulösen. Der Unterschied zwischen HTTP- und API-Triggern besteht darin, dass Sie für den API-Trigger eine OpenAPI-Spezifikationsoperation konfigurieren und binden müssen.

Parameter des HTTP-Triggers

Der HTTP-Trigger hat aufgrund der Ähnlichkeiten bei der Verwendung von HTTP/HTTPS ähnliche Parameter wie der API-Trigger.

DerHTTP-Methodebestimmt, mit welchen Methoden die Trigger-URL aufgerufen werden kann. Erlaubte Werte sind GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH und ANY. ANY lässt jede Methode durch, die anderen erlauben nur die definierte Methode.

AlleURLs, die für eine Agentengruppe konfiguriert sind, müssen in Kombination mit der Methode eindeutig sein, da sich überlappende Pfade mit identischen HTTP-Methoden zu Fehlern führen. Dies bedeutet, dass Sie denselben URL-Endpunkt mit verschiedenen Prozessen verwenden können, solange Sie unterschiedliche HTTP-Methoden verwenden. Sie können beispielsweise einen Prozess mit dem Endpunkt foo/ mit der POST-Methode und einen Prozess mit demselben Endpunkt foo/, aber mit der GET-Methode haben.

Die Pfade können Variablen als Routenparameter (innerhalb des Pfades: runmyprocess/{variable}) oder als Abfrageparameter (am Ende des Pfades: runmyprocess?id=1) enthalten.

Wenn Sie beispielsweise

  • Agent läuft auf Host myfrendsagent.example.org

  • Agent für die Verwendung von Port 9998 konfiguriert

  • HTTP-Trigger konfiguriert als runmyProcess/{myvariable}

Dadurch wird ein Trigger registriert, der auf die Adresse lauschthttps://myfrendsagent.example.org:9998/runmyprocess/{myvariable}

Wenn Sie den Trigger mit der folgenden URL aufrufen:

https://myfrendsagent.example.org:9998/runmyprocess/anyValueForMyVariable?anothervariable=1&yetanother=foo

Die folgenden Referenzen und ihre Werte werden im Prozess verfügbar sein:

#trigger.data.pathParameters.myvariable = beliebigerWertFürMeineVariable #trigger.data.queryParameters.anothervariable = 1 #trigger.data.queryParameters.yetanother = "foo"

DerErlaubte Protokollefür den HTTP-Trigger kann definiert werden, ob Anfragen mit HTTP, HTTPS oder beiden akzeptiert werden. Wenn eine Anfrage mit einem nicht zulässigen Protokoll gestellt wird, lautet die Antwort Verboten (403).

DerGenehmigunghat die gleichen Optionen wie ein API-Trigger, abgesehen von OAuth2:

  • Keine - Keine Authentifizierung überhaupt

  • Basic - Authentifizieren mit HTTP-Basisauthentifizierung

  • Zertifikat - Verwenden Sie ein Client-Zertifikat zur Authentifizierung

  • API-Schlüssel - Authentifizieren Sie sich mit einemAPI-Schlüssel

Wenn es wie bei einem API-Trigger erforderlich ist, einer bestimmten Seite zu erlauben, einen Prozess auszulösen, ist dies mit demAnfragen von diesen Ursprüngen zulassen (CORS)Flag, das Cross-Origin Resource Sharing (CORS) aktiviert. Aktivieren Sie die Einstellung „Anfragen von diesen Ursprüngen zulassen“ und definieren Sie die zulässigen Ursprünge im Textfeld. Das*Zeichen ermöglicht Anrufe von allen Ursprüngen. Mehrere Ursprünge können durch einen Doppelpunkt (,) oder ein Semikolon (;) getrennt angegeben werden.

Hinweis: Wenn der Anruf nicht vom Standardport kommt, muss er im Ursprung enthalten sein. Der Ursprung, der den Anruf tätigt, muss auch CORS unterstützen.

Sie können einen HTTP-Trigger als öffentlich markieren, indem Sie das KontrollkästchenÖffentlich – wird über API-Gateways zugänglich seinEinstellung. Wie die Option besagt, bedeutet dies, dass der Trigger-Endpunkt auf API-Gateways veröffentlicht wird. Auf private Trigger kann nur von den eigentlichen Ausführungsagenten aus zugegriffen werden. Auf diese Weise können Sie beispielsweise die Verwendung einiger APIs auf Ihr internes Netzwerk beschränken.

Sie können die HTTP-Anforderung als Rohbytes verarbeiten, wenn Sie dieÜbergeben Sie den Inhalt als ungeparstes, Base64-codiertes Byte-Array an den Prozess.Option. In diesem Fall wird der HTTP-Nachrichtentext nicht analysiert. Stattdessen wird die Anfrage unverändert als Byte-Array (serialisiert als Base64-Zeichenfolge) übergeben, auf das über die Option#trigger.data.httpContentBytesInBase64Referenz.

Hinweis: Wenn die Einstellung eingeschaltet ist,#trigger.data.httpBodyReferenz wird nicht verfügbar sein.

Zwischenrückgabe im HTTP-Trigger

Ein Prozess kann eine Antwort an den Benutzer zurückgeben, bevor der Prozess beendet ist. Diese Funktion wird aktiviert, indem dem Prozess ein Zwischenelement zur Rückgabe hinzugefügt wird. Wenn dieses Element ausgeführt wird, erhält der Anrufer eine HTTP-Antwort vom Prozess. Dies kann beispielsweise verwendet werden, wenn ein lang laufender Prozess aufgerufen wird und der Anrufer benachrichtigt werden soll, dass die lang laufende Aufgabe gestartet wurde.

HTTP-Antwortformatierung

Der HTTP-Trigger gibt das Ergebnis des ausgeführten Prozesses als HTTP-Antwort zurück. Die Antwort variiert je nach den folgenden Bedingungen. Wenn das Ergebnis des Prozesses eine Zeichenfolge ist, wird die Zeichenfolge als Hauptteil der Antwort festgelegt. Wenn es sich um ein Objekt handelt, wird es je nach ACCEPT-Header der Anforderung oder standardmäßig als JSON entweder als JSON oder XML zurückgegeben. Beispielsweise würde ACCEPT: application/XML eine XML-Antwort erzeugen, während ACCEPT: application/json eine JSON-Antwort erzeugen würde.

Wenn das Ergebnis ein Objekt mit den Eigenschaften HttpStatusCode und Content ist, wird das Ergebnis folgendermaßen einer Antwort zugeordnet:

  • HttpStatusCodeAntwortstatuscode (int)

  • InhaltDer Hauptteil der Antwort (Zeichenfolge)

  • InhaltskodierungDie Kodierung für den Textkörper, z. B. utf-8 (Zeichenfolge)

  • InhaltstypContentType-Headerwert, z. B. application/xml oder application/json (Zeichenfolge)

  • HttpHeadersAntwortheader (KeyValuePair[])

HTTP-Antwort

Die Prozesselemente return, Intermediate return und Throw haben alle die Option, eine vordefinierte HTTP-Antwort zu generieren. Siehe HTTP-Antwortergebnisse inParameter-Editor.

Denken Sie bei der Verwendung eines HTTP-Triggers daran, die Rückgabe oder den Throw vom Ausdruck in eine HTTP-Antwort zu ändern, da dies manuell geändert werden muss.

Verweisen auf Triggerwerte

  • #trigger.data.httpParametersWörterbuch der in der URL übergebenen Parameter, sowohl Routen- als auch Abfrageparameter. (z. B.eine andere Variable...)

  • #trigger.data.queryParametersWörterbuch der übergebenen HTTP-Abfrageparameter

  • #trigger.data.pathParametersWörterbuch der übergebenen Pfadparameter

  • #trigger.data.httpHeadersWörterbuch der übergebenen HTTP-Anforderungsheader (z. B.Gastgeber, Akzeptieren..).

  • #trigger.data.httpBodyHTTP-Anforderungstext als Zeichenfolge

  • #trigger.data.httpMethodHTTP-Methodentyp (z. B. GET, POST …).

  • #trigger.data.httpRequestUriAnforderungs-URI (z. B.https://myfrendsagent.example.org:9998/runmyprocess/anyValueForMyVariable?anothervariable=1).

  • #trigger.data.httpClientIpIP des Clients als String

  • #trigger.daten.cookiesMit der Anfrage verknüpfte Cookies als Wörterbuch

  • #trigger.data.BenutzernameDer dem Anrufer zugeordnete Benutzername. Wird nur festgelegt, wenn Authentifizierung verwendet wird. Für die verschiedenen Authentifizierungstypen werden die folgenden Werte übergeben:
    API-Schlüssel: Der Name des API-Schlüssels
    Grundlegende Authentifizierung: Der angegebene Benutzername
    Zertifikat: Das Feld „SubjectName.Name“ des Zertifikats

  • Sie können versuchen, von einer beliebigen Referenz aus auf eine optionale Referenz zuzugreifen (z. B.#trigger.data.httpHeader.foo) und wenn es gefunden wird, wird der Wert zurückgegeben, und wenn nicht, wird der Wert auf null gesetzt.

Der nächste Artikel istEinführung in Queue Trigger


Verwandte ArtikelAPI-TriggerHTTP-TriggerEinführung in API TriggerEinführung in Service Bus TriggerEinführung in RabbitMQ Trigger