UiPath Documentation
functions
latest
false
Guide de l'utilisateur des fonctions
  • Vue d'ensemble (Overview)
    • À propos des fonctions
  • Fonctions JavaScript
    • Démarrage
    • Construire des fonctions JavaScript
    • Déclencheurs et routage HTTP
    • Contexte de la fonction
    • Accéder aux services de la plateforme
    • Test et débogage
  • Fonctions Python
  • Déployer et exécuter
Important :
Ce contenu a été traduit à l'aide d'une traduction automatique. La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.

Déclencheurs et routage HTTP

Comportement des déclencheurs HTTP pour les fonctions JavaScript, couvrant les sources d’entrée, les paramètres de chemin d’accès, les étendues d’authentification, les limites de charge utile et l’appel d’un déclencheur déployé.

Une fonction JavaScript qui déclare un method et un path est exposée en tant que point de terminaison HTTP. C'est ce qui rend une fonction utilisable comme backend d'une application codée: l'application appelle le point de terminaison et la fonction contient les informations d'identification et les règles métier qui ne doivent jamais atteindre le navigateur.

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),
});

Les méthodes prises en charge sont les suivantes:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

D’où provient l’entrée​

MethodDonnées de la demande lues en tant qu'entrées
GETLa chaîne de requête
POST, PUT, PATCH, DELETECorps de la requête JSON

Les paramètres de chemin sont également fusionnés, de sorte que /orders/:id fournit id avec le reste de l'entrée. Chaque paramètre de chemin doit être déclaré dans le type d'entrée: le schéma dérivé est fermé, de sorte qu'un schéma non déclaré est rejeté comme propriété inconnue.

Les paramètres du chemin sont fusionnés sous le corps, de façon à ce qu’un champ du corps du même nom l’apporte. Les noms distincts évitent un remplacement silencieux.

Paramètres de chemin d'accès​

ModèleCorrespond à (Matches)
:paramExactement un segment — /users/:id correspond à /users/42
:param{regex}Un segment, soumis à des contraintes — /users/:id{[0-9]+}
:param?Le segment, ou rien - /list/:filter? correspond à /list et /list/open
*Une vue générale, y compris le préfixe barré

Les valeurs sont également disponibles sous forme de chaînes sur ctx.params, clés par nom. Des routages plus spécifiques l'emportent, quel que soit l'ordre de déclaration, de sorte qu'un /users/me littéral a priorité sur /users/:id. Le routage se comporte de manière identique dans un fichier serve local et lorsqu'il est déployé.

Appel d'un déclencheur déployé​

Une fois la fonction publiée et déployée, son path devient le champ de données dynamique d’un déclencheur HTTP Orchestrator, et le déclencheur résout les demandes entrantes par la correspondance de routage. L'appelant envoie un jeton de porteur; la plate-forme transmet l'identité de l'appelant à la fonction en tant que ctx.user.

Un déclencheur déployé est enregistré sous un nom préfixé par le package: une fonction appelée get-order dans le package orders-functions s'enregistre comme orders-functions_get-order. La résolution de la fonction par le nom nécessite ce formulaire préfixé.

À partir d'une application codée, utilisez le service Functions dans le SDK UiPath TypeScript plutôt que de créer l'URL manuellement.

Remarque :

Lorsqu'une fonction est invoquée via le fichier Functions.invoke() du SDK, les paramètres de chemin d'accès ne sont pas remplacés dans l'URL; le champ de données dynamique déclaré est envoyé tel qu'il est écrit et les valeurs se déplacent en tant que paramètres de requête ou dans le corps. Le gestionnaire reçoit toujours la bonne entrée, mais ctx.params contient le modèle littéral, et un paramètre défini par Regex ne correspondra pas. Un chemin résolu nécessite de créer l'URL dans l'appelant.

Authentification​

Les appelants s’authentifient avec un jeton de porteur à partir d’une application externe. Les étendues dont le jeton a besoin dépendent de l’endroit où l’appelant s’exécute.

Une application codée déployée demande les étendues enregistrées sur son application externe - la plateforme les injecte dans l'application au moment du déploiement. Enregistrez l'application avec les étendues Orchestrator dont les utilisateurs de la fonction ont besoin, par exemple:

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 est également requis si l'application démarre des tâches ou lit leurs résultats.

Lorsque vous exécutez la même application localement, sa chaîne d'étendue provient de uipath.json à la place, et vous pouvez également y demander OR.Default — l'étendue qui permet à Orchestrator d'appliquer les affectations de dossier et de rôle de locataire de l'appelant:

openid profile email offline_access OR.Default OR.Execution OR.Folders
openid profile email offline_access OR.Default OR.Execution OR.Folders
Remarque :

OR.Default ne peut pas être ajouté à un enregistrement d’application externe; l'API la rejette comme une étendue inconnue. Il est donc disponible pour une application exécutée localement via uipath.json, mais pas pour une application codée déployée.

Limites de charge utile​

Un déclencheur HTTP transmet la requête en tant qu'argument de tâche de sorte que la requête et la réponse sont toutes deux liées.

DirectionLimiteAu-delà de la limite
Requête (Request)10 000 caractères d'entrée sérialisée500, avec errorCode 4801 et le message JobArguments length should be less than 10000 characters
RéponseEnviron 512 Ko200 avec un corps vide et sans erreur

La réponse vide est celle sur laquelle concevoir: le statut indique la réussite et rien ne signale la perte. Lorsqu'une charge utile peut dépasser l'une ou l'autre limite, invoquez la fonction en tant que tâche à la place — une tâche transporte des entrées et des sorties volumineuses sous forme de pièces jointes. Voir Invocation de fonctions.

Astuce :

Le fait de renvoyer une référence plutôt que les données elles-mêmes (un chemin de compartiment de stockage ou un identifiant que l'appelant récupère séparément) permet d'éviter que les limites ne contraignent la conception.

Prochaines étapes​

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance

Vous souhaitez apprendre ? UiPath Academy

Vous avez des questions ? UiPath Forum

Rester à jour