Classe lrHook¶
Role
Décrit un hook LightREST.
Un hook permet d’intercepter des évènements au cours du le cycle de vie d’une requête REST (ou des évènements d’exécution) afin d’exécuter du code transversal : authentification, audit, logs, métriques, validation, transformation de réponse, etc.
Un hook peut être déclaré : - globalement sur le serveur avec lrServer:AddHook() - localement sur une route avec lrRoute:AddHook()
Membres et propriétés
| Nom | Type | Usage |
|---|---|---|
Events | EventType | Combinaison de valeurs EventType Le Hook sera déclenché pour tous les événements indiqués (exemple : EVE_INFO + EVE_WARNING+ EVE_PANIC) |
Handler | procédure | Procédure appelée lorsque l'évènement se produit. Prototype attendu : procedure fnHook(pEvent est lrHook:EventInfo) : lrHook:EventReturn Le hook peut : - consulter et modifier pEvent.Request (par exemple en mettant des données dans CustomData à l'usage de la méthode REST qui sera lancée ultérieurement) - modifier pInfo.Response - retourner une valeur EventReturn pour influencer le flux (EVE_OK, EVE_ABORT, ...) |
Enabled | booléen | Active ou désactive le hook. Par défaut = Vrai. |
Types
EventType — Type d'événement
🏷️ Type
Enumération
📘 Présentation
Evénements dont l'interception est possible au niveau Serveur et/ou Route
📋 Valeurs
| Valeur | Usage |
|---|---|
EVE_INFO | Hook serveur. Information sur l'exécution |
EVE_STARTING | Hook serveur. En cours de démarrage |
EVE_STARTED | Hook serveur. Démarré |
EVE_STOPPING | Hook serveur. En cours d'arrêt |
EVE_STOPPED | Hook serveur. Arrêté |
EVE_CONNECT | Hook serveur. Nouvelle connexion (permet par exemple de filtrer les connexions par adresse IP) |
EVE_RECEIVED | Hook serveur et route. Réception d'une requête REST |
EVE_AUTH_FAILED | Hook serveur et route. Authentification échouée |
EVE_BEFORE_HANDLER | Hook serveur et route. Avant exécution de la route |
EVE_AFTER_HANDLER | Hook serveur et route. Après exécution de la route |
EVE_RESULT | Hook serveur et route. Avant envoi du résultat (étape ultime pour vérifier, compléter, chiffrer, signer, filtrer, limiter, journaliser, ...) la réponse avant envoi au client. |
EVE_ERROR | Hook serveur. Erreur lors de l'exécution |
EVE_WARNING | Hook serveur. Warning lors de l'exécution |
EVE_PANIC | Hook serveur. Erreur grave lors de l'exécution |
EventInfo — Structure transmise au handler du hook.
🏷️ Type
Structure
📘 Présentation
Expose le contexte du HOOK au handler (évènement, requête, réponse, message) et lui permet d’agir sur le flux (contenu, workflow, ...)
🔧 Structure
| Nom | Type | Usage |
|---|---|---|
Type | EventType | Évènement déclencheur du hook (EVE_CONNECT, EVE_ERROR, ...) |
Request | objet lrRequest | Objet requête REST (peut être Null selon l'évènement). Peut être modifié (par exemple en stockant dans CustomData des données à l'attention de la méthode REST. |
Response | objet lrResponse | Objet réponse en cours (peut être Null selon l'évènement). Peut être modifié. |
Message | chaîne | Message complémentaire (détail erreur, warning, debug...) |
RouteTag | chaîne | Tag de la route courante (dans le cas d'un Hook sur une route) |
EventReturn — Valeur de retour d'un Hook
🏷️ Type
Enumération
📘 Présentation
Détermine le comportement du traitement après exécution du Hook.
Pour les Hooks informatifs (info, état du serveur, erreurs, ...) la valeur de retour du Hook est sans effet sur la poursuite du traitement de la route en cours.
📋 Valeurs
| Valeur | Usage |
|---|---|
EVE_OK | Le traitement se poursuit, enrichi des données éventuellement ajoutées ou modifiées dans les objets lrRequest et lrResponse |
EVE_ABORT | Le traitement est arrêté. Le contenu de l'objet lrResponse est envoyé au client |
EVE_REPLACE | Le traitement du Hook remplace celui de la route. Les informations additionnelles (entêtes automatiques, ...) sont ajoutées à lrResponse avant envoi au client. |