res.end()akan mengakhiri proses tanggapan. Metode ini sebenarnya berasal dari inti Node, khususnya response.end()metode http.ServerResponse. Ini digunakan untuk mengakhiri respons dengan cepat tanpa data apa pun. Sebagai contoh:
Tapi res.end sebenarnya bisa bertindak seperti res.send, di mana Anda bisa meneruskan argumen string untuk ditambahkan sebagai isi respons. Selain itu, res.send juga mengakhiri responnya. Jadi bagaimana mereka berbeda secara fungsional?
Saltthehash
33
@ psytech140 Jmar77 mendapat respons yang bagus di sini : "Jika Anda meneruskan string ke res.send (), secara otomatis mengasumsikan Jenis Konten html. res.end (), namun, cukup memanggil implementasi end () yang mendasari node pada aliran respons, jadi tidak ada asumsi yang dibuat untuk Jenis Konten. "
abagh0703
Harus meningkatkan ini murni karena saya tidak pernah menggunakan expresstetapi dari pemikiran judul - seseorang mengirim sesuatu, satu mengakhiri sesuatu .... 'sangat benar.
Darren Bartrup-Cook
Tetapi bagaimana jika Anda hanya menggunakan res.send()tanpa apa-apa. Apakah ini bertindak seperti itu res.end()?
¿Mengapa tag ini penting?
Header respons HTTP ETag adalah pengenal untuk versi sumber daya tertentu. Ini memungkinkan cache menjadi lebih efisien, dan menghemat bandwidth, karena server web tidak perlu mengirim respons penuh jika konten tidak berubah.
Ini akan menjadi jawaban yang diterima menurut saya ... lebih banyak amphasis dibuat pada perbedaan nyata yang dapat merusak hari kerja Anda daripada diskusi tentang mengakhiri tanggapan dengan / tanpa konten ...
Tomas
13
apa yang dilakukan res.send (), adalah mengimplementasikan res.write , res.setHeaders dan res.end .
itu memeriksa data apa yang Anda kirim dan mengatur header yang benar,
lalu mengalirkan data dengan res.write, dan pada akhirnya menggunakan res.end untuk menyetel akhir permintaan.
ada beberapa kasus yang ingin Anda lakukan secara manual misalnya jika Anda ingin melakukan streaming file atau kumpulan data yang besar, dalam kasus ini Anda ingin mengatur header sendiri dan menggunakan res.write untuk tetap streaming mengalir.
resadalah objek HttpResponse yang diturunkan dari OutgoingMessage. res.sendpanggilan res.endyang diimplementasikan oleh OutgoingMessage untuk mengirim respons HTTP dan menutup koneksi. Kami melihat kode di sini
res.end
digunakan oleh simpul biasa dimana sepertires.send
yang digunakan oleh kerangka ekspresJawaban:
res.send()
akan mengirimkan tanggapan HTTP. Sintaksnya adalah,Parameter body dapat berupa objek Buffer, String, objek, atau Array. Sebagai contoh:
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' });
Lihat ini untuk info lebih lanjut.
res.end()
akan mengakhiri proses tanggapan. Metode ini sebenarnya berasal dari inti Node, khususnyaresponse.end()
metodehttp.ServerResponse
. Ini digunakan untuk mengakhiri respons dengan cepat tanpa data apa pun. Sebagai contoh:res.end(); res.status(404).end();
Baca ini untuk info lebih lanjut.
sumber
express
tetapi dari pemikiran judul - seseorang mengirim sesuatu, satu mengakhiri sesuatu .... 'sangat benar.res.send()
tanpa apa-apa. Apakah ini bertindak seperti itures.end()
?Saya ingin lebih menekankan pada beberapa perbedaan utama antara
res.end()
&res.send()
sehubungan dengan tajuk tanggapan dan mengapa hal itu penting.1. res.send () akan memeriksa struktur keluaran Anda dan mengatur informasi header yang sesuai.
app.get('/',(req,res)=>{ res.send('<b>hello</b>'); });
app.get('/',(req,res)=>{ res.send({msg:'hello'}); });
Dimana dengan res.end () Anda hanya dapat merespon dengan teks dan itu tidak akan mengatur " Jenis-Konten "
app.get('/',(req,res)=>{ res.end('<b>hello</b>'); });
2. res.send () akan menyetel atribut "ETag" di header respons
app.get('/',(req,res)=>{ res.send('<b>hello</b>'); });
¿Mengapa tag ini penting?
Header respons HTTP ETag adalah pengenal untuk versi sumber daya tertentu. Ini memungkinkan cache menjadi lebih efisien, dan menghemat bandwidth, karena server web tidak perlu mengirim respons penuh jika konten tidak berubah.
res.end()
TIDAK akan menyetel atribut tajuk inisumber
apa yang dilakukan res.send (), adalah mengimplementasikan res.write , res.setHeaders dan res.end .
itu memeriksa data apa yang Anda kirim dan mengatur header yang benar,
lalu mengalirkan data dengan res.write, dan pada akhirnya menggunakan res.end untuk menyetel akhir permintaan.
ada beberapa kasus yang ingin Anda lakukan secara manual misalnya jika Anda ingin melakukan streaming file atau kumpulan data yang besar, dalam kasus ini Anda ingin mengatur header sendiri dan menggunakan res.write untuk tetap streaming mengalir.
sumber
res
adalah objek HttpResponse yang diturunkan dari OutgoingMessage.res.send
panggilanres.end
yang diimplementasikan oleh OutgoingMessage untuk mengirim respons HTTP dan menutup koneksi. Kami melihat kode di sinisumber