Aller au contenu principal

Backend du site (gestionnaires dynamiques)

Au-delà de ses fichiers statiques, un site téléversé peut disposer d'un véritable backend — de petits gestionnaires en JavaScript rattachés à des adresses individuelles. Chaque gestionnaire est lié à un chemin et à une méthode HTTP ; lorsqu'un visiteur ouvre cette adresse, Qubix exécute le gestionnaire et renvoie tout ce qu'il produit — une page, une réponse JSON, une redirection, un code de statut.

Utilisez-le lorsqu'une page doit faire quelque chose sur le serveur plutôt que de simplement afficher un contenu statique : accepter un lead via une requête POST, répondre à un chemin précis avec du HTML généré, ou envoyer une redirection selon la requête. Pour les whitepages et les landings purement statiques, vous n'en avez pas besoin — laissez l'onglet Backend vide et le site est servi en tant que simples fichiers.

Ouvrir l'onglet Backend

La fiche d'un site comporte trois onglets en haut : Fichiers, Backend et Aperçu. L'onglet actif est enregistré dans la barre d'adresse, vous pouvez donc copier un lien directement vers un onglet précis.

  1. Ouvrez la section « Sites web » et cliquez sur le site souhaité.
  2. Basculez sur l'onglet Backend.

Si le site n'a encore aucun gestionnaire, la liste affiche l'indication que « + nouveau » en crée un à partir d'un modèle.

remarque

L'onglet Backend n'est nécessaire que lorsque la page doit traiter quelque chose sur le serveur. Une page purement statique fonctionne sans aucun gestionnaire.

Créer un gestionnaire

  1. Sur l'onglet Backend, cliquez sur « + nouveau » en haut à gauche, au-dessus de la liste des gestionnaires. Un nouveau gestionnaire est créé à partir d'un modèle prêt à l'emploi et s'ouvre dans l'éditeur.

    🎬 GIF : le clic sur « + nouveau » et le gestionnaire-modèle qui s'ouvre dans l'éditeur

  2. Dans le formulaire d'en-tête au-dessus de l'éditeur, définissez le chemin — l'adresse à laquelle le gestionnaire répond. Le champ accepte un gabarit avec des paramètres substituables (par exemple, /users/:id) :
    • :name — capture un segment du chemin (par exemple, :id dans /users/:id correspond à /users/42) ;
    • * — capture le reste du chemin sur plusieurs segments ;
    • ** — correspond au reste du chemin sans le capturer.
  3. Choisissez la méthodeGET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, ou ANY (répond à toute méthode).
  4. Gardez la case Activé cochée pour que le gestionnaire fonctionne sur le site en ligne. Décochez-la pour conserver un gestionnaire enregistré mais inactif.
  5. Dans l'éditeur central, écrivez le code du gestionnaire (voir Le code du gestionnaire ci-dessous).
  6. Cliquez sur Enregistrer (ou Cmd+S, sous Windows — Ctrl+S).

Dans la liste de gauche, chaque gestionnaire est affiché par sa méthode et son chemin (un gestionnaire sans méthode définie est affiché comme ANY) ; un gestionnaire désactivé est signalé en conséquence.

Quand deux gestionnaires correspondent

Si plusieurs gestionnaires pourraient répondre à la même adresse, Qubix choisit le plus spécifique — un gestionnaire avec un chemin exact l'emporte sur un gestionnaire avec un paramètre substituable ou un caractère générique. Vous pouvez donc conserver un gestionnaire précis à côté d'un large gestionnaire fourre-tout sans qu'ils n'entrent en conflit.

Le code du gestionnaire

Un gestionnaire est une fonction JavaScript qui reçoit un objet de requête — appelons-le r — exposant la requête (méthode, chemin, arguments de la query string et du formulaire, en-têtes, les segments de chemin capturés) et la réponse (définir des en-têtes, renvoyer un statut avec un corps, ou une redirection). Le modèle à partir duquel l'éditeur démarre montre déjà la structure typique.

L'éditeur est un éditeur de code complet avec coloration syntaxique et autocomplétion : commencez à taper r. et Qubix propose les champs de requête et de réponse disponibles avec leur description, vous n'avez donc pas à les retenir.

Le même jeu d'outils que les scripts

Au sein d'un gestionnaire, vous disposez aussi du jeu d'outils Qubix partagé : requêtes en lecture seule sur la base de données, appels à des services externes et état persistant entre les exécutions. Ils fonctionnent de la même façon que dans Scripts — consultez cet article pour les détails. Les requêtes sortantes ne sont autorisées que vers les adresses que l'administrateur a placées sur la liste d'autorisation. Les tables et colonnes accessibles à une requête sont décrites dans Tables pour les requêtes sql.

Référence de l'objet r

Tout ce que le gestionnaire lit depuis la requête et utilise pour construire la réponse.

Lecture de la requête :

ChampDescription
r.methodLa méthode HTTP de la requête (GET, POST, …)
r.uriL'adresse à laquelle le gestionnaire a répondu (par exemple, /promo/123)
r.rawUriL'adresse externe complète, incluant le préfixe du service
r.argsLes paramètres d'adresse et de formulaire (clé → valeur)
r.paramsLes valeurs capturées depuis le gabarit du chemin (par exemple, id dans /users/:id)
r.requestBufferLe corps de la requête sous forme de chaîne
r.headersInLes en-têtes de la requête
r.remoteAddressL'adresse IP du visiteur
r.variablesLe contexte du clic : geo, click_id, sub1sub5, lang
r.sessionLa session du visiteur : get(key), set(key, value), delete(key)

Construction de la réponse :

Champ / méthodeAction
r.headersOutLes en-têtes de la réponse (vous pouvez les définir et les supprimer)
r.return(status, body?, location?)Envoie la réponse ; location est l'adresse de redirection
r.log(...), r.warn(...), r.error(...)Écrit dans le journal d'exécution (visible dans l'exécuteur de test)

Utilitaires cryptographiques

Un gestionnaire dispose également d'utilitaires cryptographiques :

MéthodeCe qu'elle fait
crypto.uuid()Un identifiant aléatoire
crypto.hmac(algo, key, data)HMAC de data avec key, encodé en hexadécimal ; algo vaut 'sha256', 'sha1' ou 'md5'

Pratique, par exemple, pour signer des données avant de les envoyer à un service externe via fetch.

Tester un gestionnaire

Chaque gestionnaire dispose d'un exécuteur de test intégré à droite de l'éditeur — envoyez une requête de test et voyez exactement ce que le gestionnaire répond, sans toucher au site en ligne.

  1. Choisissez la méthode et saisissez le chemin à tester (par exemple, /users/42).
  2. (Facultatif) Renseignez les entrées de la requête :
    • Requête (JSON) — les paramètres de query string sous forme d'objet JSON ;
    • Corps (raw) — le corps brut de la requête ;
    • geo et click_id — des valeurs transmises au gestionnaire en tant que variables de requête.
  3. Cliquez sur Exécuter.

Le résultat apparaît en dessous :

  • le statut de la réponse (coloré en vert / bleu / rouge) et la durée de l'exécution ;
  • paramètres — les valeurs capturées depuis le gabarit du chemin ;
  • Redirection — la cible de la redirection, si le gestionnaire en a défini une ;
  • les en-têtes et le corps de la réponse ;
  • la console — tout ce que le gestionnaire a journalisé pendant l'exécution.

Si la requête atteint ou modifie l'état stocké du gestionnaire, le panneau marque aussi la session comme sollicitée.

Validez le champ Requête

Requête (JSON) doit être du JSON valide. Si ce n'est pas le cas, le test ne s'exécute pas et le champ est surligné — corrigez le JSON et cliquez de nouveau sur Exécuter.

Modifier les fichiers du site

L'autre moitié de la fiche est l'onglet Fichiers — les fichiers statiques du site (HTML, CSS, JS, images, polices) dans une arborescence à gauche et un éditeur de code à droite. Les fichiers texte s'ouvrent avec coloration syntaxique ; enregistrez avec Enregistrer ou Cmd+S (sous Windows — Ctrl+S). Les images, vidéos, fichiers audio et autres bénéficient d'un aperçu ou d'un téléchargement. Vous pouvez glisser des fichiers d'un dossier à l'autre et en déposer de nouveaux depuis votre ordinateur.

Une présentation complète de l'onglet Fichiers se trouve dans Sites web et Téléverser un site.

Notes sur les champs et le comportement

chemin — le gabarit d'adresse auquel le gestionnaire répond. Prend en charge :name (un segment), * (le reste, capturé), et ** (le reste, non capturé). Les segments capturés sont accessibles au gestionnaire et affichés sous paramètres dans l'exécuteur de test.

méthode — quelle méthode HTTP déclenche le gestionnaire. ANY répond à toute méthode.

Activé — si le gestionnaire s'exécute sur le site en ligne. Un gestionnaire désactivé reste enregistré mais est ignoré.

« + nouveau » — crée un gestionnaire à partir du modèle intégré, prêt à modifier.

Et ensuite