res.end()mettra fin au processus de réponse. Cette méthode provient en fait du noyau Node, en particulier de la response.end()méthode de http.ServerResponse. Il est utilisé pour terminer rapidement la réponse sans aucune donnée. Par exemple:
Mais res.end peut en fait agir comme res.send, en ce sens que vous pouvez passer un argument de chaîne à ajouter comme corps de réponse. En plus de cela, res.send termine également la réponse. Alors, en quoi sont-ils fonctionnellement différents?
saltthehash
31
@ psytech140 Jmar77 a eu une bonne réponse ici : "Si vous passez une chaîne à res.send (), il suppose automatiquement un Content-Type de html. res.end (), cependant, appelle simplement l'implémentation end () sous-jacente du nœud sur le flux de réponse, donc aucune hypothèse n'est faite pour le Content-Type. "
abagh0703
J'ai dû voter pour cela uniquement parce que je n'ai jamais utilisé, expressmais à partir de la pensée du titre - on envoie quelque chose, on termine quelque chose ...
Darren Bartrup-Cook
Mais que faire si vous utilisez simplement res.send()avec rien. Cela agit-il comme res.end()?
Je voudrais mettre un peu plus l'accent sur certaines différences clés entre res.end()et en ce res.send()qui concerne les en-têtes de réponse et pourquoi ils sont importants.
1. res.send () vérifiera la structure de votre sortie et définira les informations d'en-tête en conséquence.
¿Pourquoi cette balise est-elle importante?
L'en-tête de réponse HTTP ETag est un identifiant pour une version spécifique d'une ressource. Cela permet aux caches d'être plus efficaces et d'économiser de la bande passante, car un serveur Web n'a pas besoin d'envoyer une réponse complète si le contenu n'a pas changé.
Cela doit être une réponse acceptée à mon avis ... plus de détails sont faits sur les différences réelles qui peuvent ruiner votre journée de travail au lieu de discuter sur la fin de la réponse avec / sans contenu ...
Tomas
13
ce que fait res.send () est d'implémenter res.write , res.setHeaders et res.end .
il vérifie quelles sont les données que vous envoyez et définissez les en-têtes corrects,
puis son flux les données avec res.write, et à la fin il utilise res.end pour définir la fin de la demande.
dans certains cas, vous voudrez le faire manuellement, par exemple si vous voulez diffuser un fichier ou un ensemble de données volumineux, dans ce cas, vous voudrez définir les en-têtes par vous-même et utiliser res.write afin de conserver le flux couler.
resest un objet HttpResponse qui s'étend de OutgoingMessage. res.sendappels res.endqui sont implémentés par OutgoingMessage pour envoyer une réponse HTTP et fermer la connexion. Nous voyons le code ici
res.end
utilisé par un nœud simple oùres.send
est utilisé par un cadre expressRéponses:
res.send()
enverra la réponse HTTP. Sa syntaxe est,Le paramètre body peut être un objet Buffer, une chaîne, un objet ou un tableau. Par exemple:
Voir ceci pour plus d'informations.
res.end()
mettra fin au processus de réponse. Cette méthode provient en fait du noyau Node, en particulier de laresponse.end()
méthode dehttp.ServerResponse
. Il est utilisé pour terminer rapidement la réponse sans aucune donnée. Par exemple:Lisez ceci pour plus d'informations.
la source
express
mais à partir de la pensée du titre - on envoie quelque chose, on termine quelque chose ...res.send()
avec rien. Cela agit-il commeres.end()
?Je voudrais mettre un peu plus l'accent sur certaines différences clés entre
res.end()
et en ceres.send()
qui concerne les en-têtes de réponse et pourquoi ils sont importants.1. res.send () vérifiera la structure de votre sortie et définira les informations d'en-tête en conséquence.
Où avec res.end () vous ne pouvez répondre qu'avec du texte et il ne définira pas " Content-Type "
2. res.send () définira l'attribut "ETag" dans l'en-tête de la réponse
¿Pourquoi cette balise est-elle importante?
L'en-tête de réponse HTTP ETag est un identifiant pour une version spécifique d'une ressource. Cela permet aux caches d'être plus efficaces et d'économiser de la bande passante, car un serveur Web n'a pas besoin d'envoyer une réponse complète si le contenu n'a pas changé.
res.end()
ne définira PAS cet attribut d'en-têtela source
ce que fait res.send () est d'implémenter res.write , res.setHeaders et res.end .
il vérifie quelles sont les données que vous envoyez et définissez les en-têtes corrects,
puis son flux les données avec res.write, et à la fin il utilise res.end pour définir la fin de la demande.
dans certains cas, vous voudrez le faire manuellement, par exemple si vous voulez diffuser un fichier ou un ensemble de données volumineux, dans ce cas, vous voudrez définir les en-têtes par vous-même et utiliser res.write afin de conserver le flux couler.
la source
res
est un objet HttpResponse qui s'étend de OutgoingMessage.res.send
appelsres.end
qui sont implémentés par OutgoingMessage pour envoyer une réponse HTTP et fermer la connexion. Nous voyons le code icila source