Doit res.end () être appelé en express avec node.js?

J’ai plusieurs applications Express , et je vois que dans certains modules, res.end() est appelé à la fin d’un gestionnaire de requêtes (après res.send ou res.json ), alors que dans d’autres, il n’est pas appelé.

Par exemple:

 app.get('/test', function(req, res) { res.send('Test', 200); }); 

ou:

 app.get('/test', function(req, res) { res.send('Test', 200); res.end(); }); 

Les deux cas fonctionnent, mais j’ai peur des fuites ou des descripteurs de fichiers en cours d’exécution ou quelque chose du genre, lorsque je lance beaucoup de requêtes. Lequel est “plus correct”?

La réponse à votre question est non. Vous n’avez pas besoin d’appeler res.end() si vous appelez res.send() . res.send() appelle res.end() pour vous.

Extrait de /lib/response.js , voici la fin de la fonction res.send() :

  //. . . // respond this.end(head ? null : body); return this; } 

Un exemple où vous devez appeler la fonction end () est lorsque vous envoyez un tampon en tant que fichier à télécharger.

 res.write(buffer); res.end(); 

res.end([data] [, encoding])

Termine le processus de réponse. Cette méthode provient en fait du kernel Node , en particulier de la response.end() method of http.ServerResponse. Utilisez pour terminer rapidement la réponse sans aucune donnée.

Si vous devez répondre avec des données, utilisez plutôt des méthodes telles que res.send() and res.json().