Je suis débutant à express.js
et j'essaie de comprendre la différence entre res.send
et res.write
?
res.send
Explication pratique
res.send
Ne peut être appelé qu'une seule fois, car cela équivaut à res.write
+ res.end()
Exemple
app.get('/user/:id', function (req, res) {
res.send('OK');
});
pour plus de détails expressjs.com/fr/api.html
res.write
Exemple
response.write('<html>');
response.write('<body>');
response.write('<h1>Hello, World!</h1>');
response.write('</body>');
response.write('</html>');
response.end();
Pour plus de détails
nodejs.org/docs
nodejs.org/fr/docs/guides
res.send
Équivaut à res.write + res.end
Ainsi, la différence clé est que res.send
Ne peut être appelé qu'une seule fois, alors que res.write
Peut être appelé plusieurs fois, suivi de res.end
.
Mais à part cela, res.send
Fait partie d’Express. Il peut détecter automatiquement la longueur de l'en-tête de la réponse. Avec res.send (), il peut y avoir un risque de pic de mémoire, notre application s'interposant entre les fichiers volumineux.
ne des différences les plus importantes pas indiqué dans aucune des réponses sont "drainantes".
Le res.write
peut retourner vrai ou faux. Dès la documentation:
Renvoie true si toutes les données ont été vidées avec succès dans la mémoire tampon du noyau. Retourne false si tout ou partie des données ont été mises en file d'attente dans la mémoire de l'utilisateur. 'drain' sera émis lorsque le tampon sera à nouveau libre.
Donc, en faisant res.write
, l'appelant doit attendre jusqu'à ce que l'événement de drain soit émis si le res.write
est retourné faux.
Tout cela est traité automatiquement dans res.send
. Le compromis est la mise en mémoire tampon que vous devrez faire lors de l'utilisation de ce dernier.