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:
Aber res.end kann sich tatsächlich wie res.send verhalten, indem Sie ein String-Argument übergeben können, das als Antworttext hinzugefügt werden soll. Darüber hinaus beendet res.send auch die Antwort. Wie unterscheiden sie sich funktional?
Saltthehash
31
@ psytech140 Jmar77 eine nette Antwort hatte hier : „Wenn Sie eine Zeichenfolge an res.send () übergeben, nimmt es automatisch eine Content-Type von html res.end (), jedoch ruft einfach zugrunde liegendes Ende () Implementierung des Knotens auf dem. Antwortstrom, daher werden keine Annahmen für den Inhaltstyp getroffen. "
Abagh0703
Musste dies nur deshalb positiv bewerten, weil ich es nie benutzt habe, expressaber aus dem Titelgedanke - man schickt etwas, man beendet etwas ... 'Es war richtig.
Darren Bartrup-Cook
Aber was ist, wenn Sie nur res.send()mit nichts verwenden. Handelt das so res.end()?
¿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.
Diese Antwort wird meiner Meinung nach akzeptiert ... Es wird mehr Wert auf tatsächliche Unterschiede gelegt, die Ihren Arbeitstag ruinieren können, anstatt über die Beendigung der Antwort mit / ohne Inhalt zu diskutieren ...
Tomas
13
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.
resist ein HttpResponse-Objekt, das sich von OutgoingMessage erstreckt. res.sendAufrufe, res.enddie von OutgoingMessage implementiert werden, um eine HTTP-Antwort zu senden und die Verbindung zu schließen. Wir sehen hier Code
res.end
, von einfachen Knoten verwendet, wo wieres.send
von Express-Rahmen verwendet wirdAntworten:
res.send()
sendet die HTTP-Antwort. Seine Syntax lautet:Der body-Parameter kann ein Pufferobjekt, ein String, ein Objekt oder ein Array sein. Beispielsweise:
Sehen Sie diese für weitere Informationen.
res.end()
beendet den Antwortprozess. Diese Methode stammt tatsächlich aus dem Knotenkern, insbesondere derresponse.end()
Methode vonhttp.ServerResponse
. Es wird verwendet, um die Antwort ohne Daten schnell zu beenden. Beispielsweise:Lesen Sie dies für weitere Informationen.
quelle
express
aber aus dem Titelgedanke - man schickt etwas, man beendet etwas ... 'Es war richtig.res.send()
mit nichts verwenden. Handelt das sores.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.
Wo mit res.end () Sie nur mit Text antworten können und es nicht " Content-Type " setzt
2. res.send () setzt das Attribut "ETag" im Antwortheader
¿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 NICHTquelle
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.
quelle
res
ist ein HttpResponse-Objekt, das sich von OutgoingMessage erstreckt.res.send
Aufrufe,res.end
die von OutgoingMessage implementiert werden, um eine HTTP-Antwort zu senden und die Verbindung zu schließen. Wir sehen hier Codequelle