Prozessentwicklung
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertTable of contentsHTTP-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.httpContentBytesInBase64
Referenz.
Hinweis: Wenn die Einstellung eingeschaltet ist,#trigger.data.httpBody
Referenz 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:
HttpStatusCode
Antwortstatuscode (int)Inhalt
Der Hauptteil der Antwort (Zeichenfolge)Inhaltskodierung
Die Kodierung für den Textkörper, z. B. utf-8 (Zeichenfolge)Inhaltstyp
ContentType-Headerwert, z. B. application/xml oder application/json (Zeichenfolge)HttpHeaders
Antwortheader (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.httpParameters
Wörterbuch der in der URL übergebenen Parameter, sowohl Routen- als auch Abfrageparameter. (z. B.eine andere Variable
...)#trigger.data.queryParameters
Wörterbuch der übergebenen HTTP-Abfrageparameter#trigger.data.pathParameters
Wörterbuch der übergebenen Pfadparameter#trigger.data.httpHeaders
Wörterbuch der übergebenen HTTP-Anforderungsheader (z. B.Gastgeber, Akzeptieren
..).#trigger.data.httpBody
HTTP-Anforderungstext als Zeichenfolge#trigger.data.httpMethod
HTTP-Methodentyp (z. B. GET, POST …).#trigger.data.httpRequestUri
Anforderungs-URI (z. B.https://myfrendsagent.example.org:9998/runmyprocess/anyValueForMyVariable?anothervariable=1
).#trigger.data.httpClientIp
IP des Clients als String#trigger.daten.cookies
Mit der Anfrage verknüpfte Cookies als Wörterbuch#trigger.data.Benutzername
Der 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 ZertifikatsSie 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