Skip to main content
Glama
docs.html23.5 kB
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Documentation n8n - Bonnes Pratiques</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> <style> body { padding-top: 20px; padding-bottom: 20px; } .header { padding-bottom: 20px; border-bottom: 1px solid #e5e5e5; margin-bottom: 30px; } .sidebar { position: sticky; top: 20px; } .sidebar .nav-link { padding: 0.5rem 1rem; color: #495057; } .sidebar .nav-link.active { color: #007bff; font-weight: 700; } .sidebar .nav-link:hover { color: #007bff; } .doc-section { margin-bottom: 3rem; } .doc-section h3 { margin-top: 2rem; margin-bottom: 1rem; } .doc-section h4 { margin-top: 1.5rem; margin-bottom: 0.75rem; } .doc-section pre { background-color: #f8f9fa; padding: 1rem; border-radius: 0.25rem; margin-bottom: 1rem; } .doc-section code { color: #d63384; } .doc-section .alert { margin-bottom: 1rem; } .nav-link { color: #495057; font-weight: 500; } .nav-link.active { color: #007bff; font-weight: 700; } </style> </head> <body> <div class="container"> <div class="header"> <div class="d-flex justify-content-between align-items-center"> <h1>Documentation n8n</h1> <nav> <ul class="nav"> <li class="nav-item"><a href="/" class="nav-link">Accueil</a></li> <li class="nav-item"><a href="/n8n-api.html" class="nav-link">API n8n</a></li> <li class="nav-item"><a href="/workflow-manager.html" class="nav-link">Gestionnaire de Workflows</a></li> <li class="nav-item"><a href="/validator.html" class="nav-link">Validateur</a></li> <li class="nav-item"><a href="/templates.html" class="nav-link">Templates</a></li> <li class="nav-item"><a href="/docs.html" class="nav-link active">Documentation</a></li> </ul> </nav> </div> </div> <div class="row"> <div class="col-md-3"> <div class="sidebar"> <nav class="nav flex-column"> <a class="nav-link active" href="#introduction">Introduction</a> <a class="nav-link" href="#naming">Conventions de nommage</a> <a class="nav-link" href="#error-handling">Gestion des erreurs</a> <a class="nav-link" href="#security">Sécurité</a> <a class="nav-link" href="#performance">Performance</a> <a class="nav-link" href="#documentation">Documentation des workflows</a> <a class="nav-link" href="#best-practices">Meilleures pratiques générales</a> <a class="nav-link" href="#integration">Intégration avec d'autres systèmes</a> <a class="nav-link" href="#testing">Tests et débogage</a> <a class="nav-link" href="#deployment">Déploiement et maintenance</a> </nav> </div> </div> <div class="col-md-9"> <div id="introduction" class="doc-section"> <h2>Introduction</h2> <p> Cette documentation présente les bonnes pratiques pour développer des workflows n8n efficaces, maintenables et sécurisés. Elle est destinée aux développeurs travaillant avec l'instance n8n déployée sur Cloudron (n8n.bienquoi.com) et utilisant le serveur MCP (Master Control Program) pour établir un cadre de développement structuré. </p> <p> Le serveur MCP fournit des outils pour valider vos workflows, gérer les bonnes pratiques, et faciliter le développement collaboratif. Cette documentation couvre les aspects suivants : </p> <ul> <li>Conventions de nommage</li> <li>Gestion des erreurs</li> <li>Sécurité</li> <li>Performance</li> <li>Documentation des workflows</li> <li>Et plus encore...</li> </ul> </div> <div id="naming" class="doc-section"> <h2>Conventions de nommage</h2> <p> Des conventions de nommage cohérentes rendent vos workflows plus faciles à comprendre et à maintenir. </p> <h3>Nommage des workflows</h3> <p> Utilisez un format descriptif qui indique clairement la fonction du workflow : </p> <ul> <li><strong>[Département/Service] - [Action] - [Système/Entité]</strong></li> <li>Exemple : <code>Marketing - Synchronisation - Contacts CRM vers Mailchimp</code></li> </ul> <div class="alert alert-info"> <strong>Conseil :</strong> Évitez les noms génériques comme "Test" ou "Nouveau workflow" en production. </div> <h3>Nommage des nœuds</h3> <p> Chaque nœud doit avoir un nom qui décrit clairement son rôle dans le workflow : </p> <ul> <li><strong>[Action] - [Détail optionnel]</strong></li> <li>Exemple : <code>Récupérer contacts - Nouveaux depuis hier</code></li> </ul> <h3>Nommage des variables</h3> <p> Pour les variables et expressions, utilisez le camelCase : </p> <pre><code>// Bon exemple const clientName = $input.body.client.name; const orderTotal = $input.body.order.total; // À éviter const client_name = $input.body.client.name; const Order_Total = $input.body.order.total;</code></pre> </div> <div id="error-handling" class="doc-section"> <h2>Gestion des erreurs</h2> <p> Une bonne gestion des erreurs est essentielle pour créer des workflows robustes et fiables. </p> <h3>Principes de base</h3> <ul> <li>Chaque workflow critique doit avoir une gestion d'erreur appropriée</li> <li>Utilisez des nœuds "Error Trigger" pour capturer et traiter les erreurs</li> <li>Journalisez les erreurs avec suffisamment de contexte pour le débogage</li> <li>Mettez en place des notifications pour les erreurs critiques</li> </ul> <h3>Exemple de configuration</h3> <p> Structure recommandée pour un workflow avec gestion d'erreurs : </p> <ol> <li>Workflow principal avec les nœuds de traitement</li> <li>Nœud "Error Trigger" connecté au workflow principal</li> <li>Nœuds de traitement d'erreur (journalisation, notification)</li> <li>Éventuellement, nœuds de reprise ou de compensation</li> </ol> <div class="alert alert-warning"> <strong>Important :</strong> Testez toujours vos mécanismes de gestion d'erreur en simulant des échecs. </div> </div> <div id="security" class="doc-section"> <h2>Sécurité</h2> <p> La sécurité est primordiale, surtout lorsque vos workflows traitent des données sensibles ou interagissent avec des systèmes externes. </p> <h3>Gestion des informations d'identification</h3> <ul> <li>Utilisez toujours les fonctionnalités de gestion des informations d'identification de n8n</li> <li>Ne stockez jamais de mots de passe, tokens ou clés API en dur dans les workflows</li> <li>Utilisez des variables d'environnement pour les informations sensibles</li> </ul> <h3>Contrôle d'accès</h3> <p> Limitez l'accès aux workflows selon le principe du moindre privilège : </p> <ul> <li>N'accordez que les autorisations minimales nécessaires aux comptes de service</li> <li>Utilisez des rôles et des autorisations spécifiques pour chaque intégration</li> <li>Révisez régulièrement les accès et révoquant les autorisations inutilisées</li> </ul> <h3>Validation des données</h3> <p> Validez toujours les entrées et les sorties : </p> <pre><code>// Exemple de validation avec Function node if (!$input.body.email || !$input.body.email.includes('@')) { throw new Error('Email invalide'); } // Vérification des valeurs numériques if (isNaN($input.body.amount) || $input.body.amount <= 0) { throw new Error('Montant invalide'); }</code></pre> </div> <div id="performance" class="doc-section"> <h2>Performance</h2> <p> Optimisez vos workflows pour qu'ils s'exécutent efficacement et utilisent les ressources de manière responsable. </p> <h3>Traitement par lots</h3> <p> Pour les opérations sur de grandes quantités de données : </p> <ul> <li>Utilisez le traitement par lots plutôt que de traiter les éléments un par un</li> <li>Configurez des tailles de lot appropriées (généralement entre 10 et 100 éléments)</li> <li>Utilisez des nœuds "Split In Batches" et "Merge" pour contrôler le flux</li> </ul> <h3>Mise en cache</h3> <p> Réduisez les appels API inutiles : </p> <ul> <li>Utilisez le nœud "Cache" pour stocker temporairement les résultats fréquemment utilisés</li> <li>Définissez des durées de mise en cache appropriées selon la fraîcheur nécessaire des données</li> </ul> <h3>Planification intelligente</h3> <p> Optimisez la fréquence d'exécution : </p> <ul> <li>Évitez les exécutions trop fréquentes pour les tâches non critiques</li> <li>Planifiez les workflows intensifs pendant les heures creuses</li> <li>Utilisez des déclencheurs basés sur les événements plutôt que des sondages quand c'est possible</li> </ul> </div> <div id="documentation" class="doc-section"> <h2>Documentation des workflows</h2> <p> Une documentation claire est essentielle pour la maintenance à long terme et la collaboration. </p> <h3>Structure recommandée</h3> <p> Chaque workflow devrait inclure : </p> <ol> <li><strong>Objectif :</strong> Description concise de ce que fait le workflow</li> <li><strong>Déclencheurs :</strong> Comment et quand le workflow est activé</li> <li><strong>Entrées :</strong> Données attendues et leur format</li> <li><strong>Sorties :</strong> Résultats produits et leur utilisation</li> <li><strong>Dépendances :</strong> Services externes, autres workflows, etc.</li> <li><strong>Considérations :</strong> Limites, cas particuliers, etc.</li> </ol> <h3>Documentation dans le workflow</h3> <p> Utilisez des nœuds "Sticky Note" pour documenter directement dans le workflow : </p> <ul> <li>Placez des notes explicatives à côté des sections complexes</li> <li>Documentez les décisions importantes et les logiques métier</li> <li>Incluez des exemples pour les transformations de données complexes</li> </ul> <div class="alert alert-success"> <strong>Bonne pratique :</strong> Mettez à jour la documentation chaque fois que vous modifiez un workflow. </div> </div> <div id="best-practices" class="doc-section"> <h2>Meilleures pratiques générales</h2> <p> Conseils généraux pour développer des workflows n8n efficaces et maintenables. </p> <h3>Organisation des workflows</h3> <ul> <li>Regroupez les workflows par fonction ou département</li> <li>Utilisez des tags cohérents pour faciliter la recherche</li> <li>Préférez plusieurs workflows simples à un seul workflow complexe</li> </ul> <h3>Modularité</h3> <p> Créez des workflows modulaires et réutilisables : </p> <ul> <li>Développez des sous-workflows pour les fonctionnalités communes</li> <li>Utilisez le nœud "Execute Workflow" pour appeler d'autres workflows</li> <li>Standardisez les entrées et sorties de vos workflows modulaires</li> </ul> <h3>Contrôle de version</h3> <p> Gérez les versions de vos workflows : </p> <ul> <li>Exportez régulièrement les workflows importants</li> <li>Utilisez un système de contrôle de version (Git) pour stocker les exports</li> <li>Documentez les changements significatifs</li> </ul> </div> <div id="integration" class="doc-section"> <h2>Intégration avec d'autres systèmes</h2> <p> Bonnes pratiques pour intégrer n8n avec d'autres applications et services. </p> <h3>API REST</h3> <p> Pour les intégrations via API REST : </p> <ul> <li>Utilisez la pagination pour traiter de grands ensembles de données</li> <li>Implémentez une gestion appropriée des limites de taux (rate limiting)</li> <li>Utilisez des mécanismes de reprise en cas d'échec temporaire</li> </ul> <h3>Webhooks</h3> <p> Pour les intégrations basées sur les webhooks : </p> <ul> <li>Sécurisez vos webhooks avec des secrets ou des jetons</li> <li>Validez toujours les données entrantes</li> <li>Implémentez une gestion des doublons pour éviter le traitement multiple</li> </ul> <h3>Bases de données</h3> <p> Pour les intégrations avec des bases de données : </p> <ul> <li>Utilisez des requêtes paramétrées pour éviter les injections SQL</li> <li>Limitez les privilèges des comptes de base de données utilisés</li> <li>Optimisez les requêtes pour les grandes tables</li> </ul> </div> <div id="testing" class="doc-section"> <h2>Tests et débogage</h2> <p> Méthodologies pour tester et déboguer efficacement vos workflows. </p> <h3>Tests unitaires</h3> <p> Testez chaque nœud individuellement : </p> <ul> <li>Utilisez le mode "Test" de n8n pour vérifier les sorties de chaque nœud</li> <li>Testez avec différents jeux de données, y compris des cas limites</li> <li>Vérifiez les transformations de données avec des exemples connus</li> </ul> <h3>Tests d'intégration</h3> <p> Testez le workflow complet : </p> <ul> <li>Créez des environnements de test séparés quand c'est possible</li> <li>Utilisez des données de test représentatives mais non sensibles</li> <li>Testez les scénarios d'erreur et les cas exceptionnels</li> </ul> <h3>Débogage</h3> <p> Techniques pour identifier et résoudre les problèmes : </p> <ul> <li>Utilisez des nœuds "Function" avec des console.log() pour l'inspection</li> <li>Activez l'exécution pas à pas pour suivre le flux de données</li> <li>Consultez les journaux d'exécution pour identifier les erreurs</li> </ul> </div> <div id="deployment" class="doc-section"> <h2>Déploiement et maintenance</h2> <p> Bonnes pratiques pour déployer et maintenir vos workflows en production. </p> <h3>Processus de déploiement</h3> <ol> <li>Développez et testez dans un environnement de développement</li> <li>Validez le workflow avec le validateur MCP</li> <li>Exportez et versionnez le workflow</li> <li>Déployez dans l'environnement de production</li> <li>Vérifiez le fonctionnement après déploiement</li> </ol> <h3>Surveillance</h3> <p> Mettez en place une surveillance appropriée : </p> <ul> <li>Configurez des alertes pour les échecs de workflow</li> <li>Surveillez les temps d'exécution et les performances</li> <li>Mettez en place des vérifications de santé régulières</li> </ul> <h3>Maintenance</h3> <p> Maintenez vos workflows à jour : </p> <ul> <li>Révisez régulièrement les workflows existants</li> <li>Mettez à jour les nœuds et les intégrations lorsque nécessaire</li> <li>Archivez ou supprimez les workflows obsolètes</li> </ul> <div class="alert alert-info"> <strong>Conseil :</strong> Planifiez des revues trimestrielles de vos workflows critiques pour assurer leur bon fonctionnement et leur pertinence continue. </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script> <script> document.addEventListener('DOMContentLoaded', function() { // Gestion du défilement et de la navigation const navLinks = document.querySelectorAll('.sidebar .nav-link'); // Activer le lien de navigation lors du défilement window.addEventListener('scroll', function() { let current = ''; document.querySelectorAll('.doc-section').forEach(function(section) { const sectionTop = section.offsetTop - 100; if (window.pageYOffset >= sectionTop) { current = section.getAttribute('id'); } }); navLinks.forEach(function(link) { link.classList.remove('active'); if (link.getAttribute('href') === '#' + current) { link.classList.add('active'); } }); }); // Défilement fluide lors du clic sur un lien de navigation navLinks.forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href').substring(1); const targetElement = document.getElementById(targetId); window.scrollTo({ top: targetElement.offsetTop - 50, behavior: 'smooth' }); // Mettre à jour l'URL sans recharger la page history.pushState(null, null, '#' + targetId); }); }); }); </script> </body> </html>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lowprofix/n8n-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server