Quelle est la différence entre res.end () et res.send ()?

Je suis un débutant dans Express.js et je suis confus par ces deux mots-clés: res.end() et res.send() .

Sont-ils identiques ou différents?

res.send() enverra la réponse HTTP. Sa syntaxe est,

 res.send([body]) 

Le paramètre body peut être un object Buffer, une chaîne, un object ou un tableau. Par exemple:

 res.send(new Buffer('whoop')); res.send({ some: 'json' }); res.send('

some html

'); res.status(404).send('Sorry, we cannot find that!'); res.status(500).send({ error: 'something blew up' });

Voir cela pour plus d’informations.

res.end() mettra fin au processus de réponse. Cette méthode provient en fait du kernel Node, en particulier de la méthode response.end() de http.ServerResponse . Il est utilisé pour mettre rapidement fin à la réponse sans aucune donnée. Par exemple:

 res.end(); res.status(404).end(); 

Lisez ceci pour plus d’informations.

Je voudrais mettre un peu plus l’accent sur certaines différences clés entre res.end() & 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('hello'); }); 

entrer la description de l'image ici


  app.get('/',(req,res)=>{ res.send({msg:'hello'}); }); 

entrer la description de l'image ici

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('hello'); }); 

entrer la description de l'image ici

2. res.send () définira l’atsortingbut “ETag” dans l’en-tête de réponse

  app.get('/',(req,res)=>{ res.send('hello'); }); 

entrer la description de l'image ici

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 atsortingbut d’en-tête