- Überblick
- JavaScript-Funktionen
- Python-Funktionen
- Bereitstellen und ausführen
HTTP-Trigger und Routing
HTTP-Triggerverhalten für JavaScript-Funktionen, das Eingabequellen, Pfadparameter, Authentifizierungs-Scopes, Nutzlastlimits und den Aufruf eines bereitgestellten Triggers abdeckt.
Eine JavaScript-Funktion, die ein method und ein path deklariert, wird als HTTP-Endpunkt verfügbar gemacht. Dadurch wird eine Funktion als Backend einer codierten App verwendbar: Die App ruft den Endpunkt auf und die Funktion enthält die Anmeldeinformationen und Geschäftsregeln, die den Browser niemals erreichen dürfen.
export default defineFunction({
name: "get-order",
method: "GET",
path: "/orders/:id",
input: defineSchema<{ id: string }>(),
handler: async (input, ctx) => fetchOrder(input.id),
});
export default defineFunction({
name: "get-order",
method: "GET",
path: "/orders/:id",
input: defineSchema<{ id: string }>(),
handler: async (input, ctx) => fetchOrder(input.id),
});
Die unterstützten Methoden sind:
GETPOSTPUTPATCHDELETE
Woher die Eingabe kommt
| Method | Als Eingabe gelesene Daten anfordern |
|---|---|
GET | Die Abfragezeichenfolge |
POST, PUT, PATCH, DELETE | Der JSON-Anforderungstext |
Pfadparameter werden ebenfalls zusammengeführt, sodass /orders/:id id neben dem Rest der Eingabe liefert. Jeder Pfadparameter muss im Eingabetyp deklariert werden: Das abgeleitete Schema ist geschlossen, sodass ein nicht deklarierter Parameter als unbekannte Eigenschaft abgelehnt wird.
Pfadparameter werden unter dem Textkörper zusammengeführt, sodass ein Textfeld mit demselben Namen gewinnt. Eindeutige Namen vermeiden eine stille Überschreibung.
Pfadparameter
| Muster | Übereinstimmungen (Matches) |
|---|---|
:param | Genau ein Segment – /users/:id stimmt mit /users/42überein |
:param{regex} | Ein Segment, eingeschränkt – /users/:id{[0-9]+} |
:param? | Das Segment oder nichts – /list/:filter? stimmt mit /list und /list/openüberein |
* | Ein nachgestelltes Catch-All, einschließlich des einfachen Präfixes |
Werte sind auch als Zeichenfolgen auf ctx.params verfügbar, verschlüsselt durch den Namen. Spezifische Routen gewinnen unabhängig von der Deklarationsreihenfolge, sodass ein Literal /users/me Vorrang vor /users/:id hat. Das Routing verhält sich in einer lokalen serve und bei der Bereitstellung identisch.
Aufrufen eines bereitgestellten Triggers
Sobald die Funktion veröffentlicht und bereitgestellt wurde, wird ihre path zur Slug eines Orchestrator-HTTP-Triggers und der Trigger löst eingehende Anforderungen durch Routenabgleich auf. Der Aufrufer sendet ein Bearer-Token; übergibt die Plattform die Identität des Aufrufers als ctx.user an die Funktion.
Ein bereitgestellter Trigger wird unter einem Paket mit Präfix registriert: Eine Funktion mit dem Namen get-order im Paket orders-functions wird als orders-functions_get-order registriert. Das Auflösen der Funktion nach Name erfordert dieses Präfix.
Verwenden Sie in einer codierten App den Functions -Dienst im UiPath TypeScript SDK , anstatt die URL manuell zu erstellen.
Wenn eine Funktion über die Functions.invoke() des SDK aufgerufen wird, werden Pfadparameter nicht in der URL ersetzt – die deklarierte Slug wird geschrieben gesendet und die Werte werden als Abfrageparameter oder im Textkörper übertragen. Der Handler erhält weiterhin die richtige Eingabe, aber ctx.params enthält das Literalmuster und ein durch regulären Ausdruck eingeschränkter Parameter stimmt nicht überein. Ein aufgelöster Pfad erfordert das Erstellen der URL im Aufrufer.
Authentication
Aufrufer authentifizieren sich mit einem Bearer-Token aus einer externen Anwendung. Welche Scopes dieses Token benötigt, hängt davon ab, wo der Aufrufer ausgeführt wird.
Eine bereitgestellte codierte App fordert die in ihrer externen Anwendung registrierten Scopes an – die Plattform fügt sie bei der Bereitstellung in die App ein. Registrieren Sie die App mit den Orchestrator-Scopes, die die Aufrufer der Funktion benötigen, z. B.:
uip admin external-apps create "My App" \
--non-confidential \
--redirect-uri "https://<org>.uipath.host/my-app" \
--user-scope "OR.Execution,OR.Folders"
uip admin external-apps create "My App" \
--non-confidential \
--redirect-uri "https://<org>.uipath.host/my-app" \
--user-scope "OR.Execution,OR.Folders"
OR.Jobs ist auch erforderlich, wenn die App Aufträge startet oder deren Ergebnisse liest.
Wenn Sie dieselbe App lokal ausführen, stammt die Scope-Zeichenfolge stattdessen von uipath.json , und dort können Sie auch OR.Default anfordern – den Scope, der den Orchestrator dazu bringt, die Ordner- und Mandantenrollenzuweisungen des Aufrufers anzuwenden:
openid profile email offline_access OR.Default OR.Execution OR.Folders
openid profile email offline_access OR.Default OR.Execution OR.Folders
OR.Default kann nicht zu einer Registrierung für externe Anwendungen hinzugefügt werden; Die API weist ihn als unbekannten Scope zurück. Sie ist daher für eine lokal ausgeführte App über uipath.json verfügbar, aber nicht für eine bereitgestellte codierte App.
Nutzlastlimits
Ein HTTP-Trigger leitet die Anforderung als Auftragsargumente durch, sodass sowohl die Anforderung als auch die Antwort begrenzt sind.
| Richtung | Grenzwert | Grenzwert überschritten |
|---|---|---|
| Request | 10.000 Zeichen serialisierte Eingabe | 500, mit errorCode 4801 und der Meldung JobArguments length should be less than 10000 characters |
| Antwort | Ungefähr 512 KB | 200 mit einem leeren Textkörper und keinem Fehler |
Die leere Antwort ist diejenige, gegen die entworfen werden soll: Der Status ist erfolgreich und nichts meldet den Verlust. Wenn eine Nutzlast einen der beiden Grenzwerte überschreiten kann, rufen Sie stattdessen die Funktion als Auftrag auf – ein Auftrag enthält große Eingaben und Ausgaben als Anhänge. Siehe Aufrufen von Funktionen.
Das Zurückgeben einer Referenz anstelle der Daten selbst – eines Speicher-Bucket-Pfads oder eines Bezeichners, den der Aufrufer separat abruft – verhindert, dass die Grenzen das Design einschränken.
Nächste Schritte
- Funktionskontext – Lesen Sie die Identität des Aufrufers und die Anforderung.
- Zugriff auf Plattformdienste – erreichen Sie den Orchestrator über den Handler.
- Weiterleitungsreferenz – die vollständigen Abgleichregeln.