Je suis un débutant en Express.js
et je suis confus par ces deux mots-clés: res.end()
et res.send()
.
Sont-ils identiques ou différents?
Je suis un débutant en Express.js
et je suis confus par ces deux mots-clés: res.end()
et res.send()
.
Sont-ils identiques ou différents?
Réponses:
res.send()
enverra la réponse HTTP. Sa syntaxe est,
res.send([body])
Le paramètre body peut être un objet Buffer, une chaîne, un objet ou un tableau. Par exemple:
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
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 la response.end()
méthode de http.ServerResponse
. Il est utilisé pour terminer rapidement la réponse sans aucune donnée. Par exemple:
res.end();
res.status(404).end();
Lisez ceci pour plus d'informations.
express
mais à partir de la pensée du titre - on envoie quelque chose, on termine quelque chose ...
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.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Où avec res.end () vous ne pouvez répondre qu'avec du texte et il ne définira pas " Content-Type "
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send () définira l'attribut "ETag" dans l'en-tête de la réponse
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿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ête
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.
res.end
utilisé par un nœud simple oùres.send
est utilisé par un cadre express