Ich bin ein Anfänger in Express.js
und ich bin durch diese beiden Schlüsselwörter verwirrt: res.end()
und res.send()
.
Sind sie gleich oder verschieden?
Ich bin ein Anfänger in Express.js
und ich bin durch diese beiden Schlüsselwörter verwirrt: res.end()
und res.send()
.
Sind sie gleich oder verschieden?
Antworten:
res.send()
sendet die HTTP-Antwort. Seine Syntax lautet:
res.send([body])
Der body-Parameter kann ein Pufferobjekt, ein String, ein Objekt oder ein Array sein. Beispielsweise:
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' });
Sehen Sie diese für weitere Informationen.
res.end()
beendet den Antwortprozess. Diese Methode stammt tatsächlich aus dem Knotenkern, insbesondere der response.end()
Methode von http.ServerResponse
. Es wird verwendet, um die Antwort ohne Daten schnell zu beenden. Beispielsweise:
res.end();
res.status(404).end();
Lesen Sie dies für weitere Informationen.
express
aber aus dem Titelgedanke - man schickt etwas, man beendet etwas ... 'Es war richtig.
res.send()
mit nichts verwenden. Handelt das so res.end()
?
Ich möchte einige wichtige Unterschiede zwischen res.end()
& res.send()
in Bezug auf Antwortheader und deren Bedeutung etwas stärker hervorheben .
1. res.send () überprüft die Struktur Ihrer Ausgabe und legt die Header-Informationen entsprechend fest.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Wo mit res.end () Sie nur mit Text antworten können und es nicht " Content-Type " setzt
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send () setzt das Attribut "ETag" im Antwortheader
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿Warum ist dieses Tag wichtig?
Der ETag-HTTP-Antwortheader ist eine Kennung für eine bestimmte Version einer Ressource. Dadurch können Caches effizienter gestaltet und Bandbreite gespart werden, da ein Webserver keine vollständige Antwort senden muss, wenn sich der Inhalt nicht geändert hat.
res.end()
setzt dieses Header-Attribut NICHT
res.send () implementiert res.write , res.setHeaders und res.end .
Es überprüft, welche Daten Sie senden, und legt die richtigen Header fest.
Anschließend werden die Daten mit res.write gestreamt, und am Ende wird res.end verwendet, um das Ende der Anforderung festzulegen.
In einigen Fällen möchten Sie dies manuell tun, z. B. wenn Sie eine Datei oder einen großen Datensatz streamen möchten. In diesem Fall möchten Sie die Header selbst festlegen und res.write verwenden, um den Stream beizubehalten fließen.
res.end
, von einfachen Knoten verwendet, wo wieres.send
von Express-Rahmen verwendet wird