Rumah >hujung hadapan web >tutorial js >Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod

Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod

青灯夜游
青灯夜游ke hadapan
2022-01-21 18:57:022175semak imbas

Artikel ini akan membincangkan tentang nod rangka kerja Express dan mempelajari tentang res.send() dan res.end() dalam Express.

Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod

Dalam kod pelayan menggunakan Node.js, jika anda menggunakan rangka kerja Express, selalunya terdapat dua respons kepada kaedah permintaan:

// 方法1
app.get("/end", (req, res, next) =>{
    res.end(xxx);
});
// 方法2
app.get("/send", (req, res, next) =>{
    res.send(xxx);
});

Jadi apakah perbezaan antara kedua-dua kaedah ini? Apakah senario aplikasi masing-masing? Inilah yang perlu saya jelaskan hari ini.

Express’s res.end()

Definisi

Ia boleh tamat dengan cepat tanpa sebarang respons data.

Kaedah ini sebenarnya berasal dari teras Nod, khususnya kaedah http.ServerResponse.Use response.end():

Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod

Sintaksis

res.end([data[, encoding]][, callback])

Analisis parameter:

  • data
  • pengekodan
  • panggil balik

Mendalam

Jika objek dihantar ke kaedah res.end(), ralat akan berlaku :

Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod

Express res.send()

takrifkan

kepada permintaan Pelanggan menghantar mesej respons HTTP.

Sintaks

res.send([body[,statusCode]])

Parameter badan boleh menjadi Penampan, Objek, Rentetan, Boolean atau Tatasusunan.

Sedalam-dalamnya

Melalui penyahpepijatan kod, kita boleh mendapati bahawa kaedah res.send() Express akhirnya memanggil Kaedah http.ServerResponse.Use response.end() :

// node_modules/express/lib/response.js
res.send = function send(body) {
  var chunk = body;
  var encoding;
  ……
  if (req.method === 'HEAD') {
    // skip body for HEAD
    this.end();
  } else {
    // respond
    this.end(chunk, encoding);
  }
  return this;
};

Perbandingan

Mata yang sama

Kaedah res.end() dan res.send( ) Express :

  • Kedua-duanya akhirnya kembali kepada kaedah http.ServerResponse.Use response.end().

  • Kedua-duanya akan menamatkan proses respons semasa.

Perbezaan

Perbezaan antara kaedah res.end() dan res.send() Express:

  • Yang pertama hanya boleh menghantar rentetan atau jenis Penampan, manakala yang terakhir boleh menghantar sebarang jenis data.

  • Dari sudut semantik, yang pertama lebih sesuai untuk senario tanpa sebarang data tindak balas, manakala yang kedua lebih sesuai untuk senario dengan data tindak balas.

Ringkasan

Apabila menggunakan kaedah res.end() dan res.send() Express, biasanya disyorkan untuk menggunakan kaedah res.send(), jadi tidak perlu mengambil berat tentang format data respons kerana Express memproses data secara dalaman.

~Artikel ini telah tamat, terima kasih kerana membaca!

Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs! !

Atas ialah kandungan terperinci Analisis ringkas res.send() dan res.end() dalam rangka kerja Express nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam