39 votes

Node.js : Comment faire quelque chose sur toutes les requêtes HTTP en Express ?

Je voudrais donc faire quelque chose comme :

app.On_All_Incoming_Request(function(req, res){
    console.log('request received from a client.');
});

l'actuel app.all() nécessite un chemin, et si je donne par exemple ceci / puis ça ne fonctionne que lorsque je suis sur la page d'accueil, donc ce n'est pas vraiment tout

En node.js, il suffit d'écrire quelque chose après avoir créé le serveur http et avant de faire le routage de la page.

Alors comment faire cela avec l'express, et quelle est la meilleure façon de le faire ?

58voto

Rahman Kalfane Points 1157

Express est basé sur le Connectez-vous à intergiciel.

Les capacités de routage d'Express sont fournies par l'option router de votre application et vous êtes libre d'ajouter vos propres middlewares à votre application.

var app = express.createServer();

// Your own super cool function
var logger = function(req, res, next) {
    console.log("GOT REQUEST !");
    next(); // Passing the request to the next handler in the stack.
}

app.configure(function(){
    app.use(logger); // Here you add your logger to the stack.
    app.use(app.router); // The Express routes handler.
});

app.get('/', function(req, res){
    res.send('Hello World');
});

app.listen(3000);

C'est aussi simple que cela.

(PS : Si vous voulez juste un peu de journalisation, vous pouvez envisager d'utiliser la fonction bûcheron fourni par Connect)

9voto

Abadis Points 515

Vous devriez le faire :

app.all("*", (req, res, next) => {
    console.log(req); // do anything you want here
    next();
});

4voto

Tarun Rawat Points 156

Vous pouvez y parvenir en introduisant une fonction d'intergiciel. app.use(your_function) peut être utile. app.use en acceptant une fonction qui sera exécutée à chaque requête enregistrée sur votre serveur. Exemple :

app.use((req, res, next) => {
    console.log("req received from client");
    next(); // this will invoke next middleware function
});

2voto

vkarpov15 Points 868

Supports express caractères génériques dans les chemins d'accès . Donc app.all('*', function(req, res) {}) est une façon de faire.

Mais c'est juste pour les gestionnaires de route. La différence est qu'on s'attend à ce qu'un gestionnaire de route Express envoie une réponse, et si ce n'est pas le cas, Express n'enverra jamais de réponse. Si vous voulez faire quelque chose sans envoyer explicitement une réponse, comme vérifier la présence d'un en-tête, vous devez utiliser la fonction Middleware express . app.use(function(req, res, next) { doStuff(); next(); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X