Saya berharap semua orang dapat terus membaca serangkaian artikel saya. Ini juga merupakan dorongan dan dukungan terbesar bagi saya. Mari kita buat kemajuan bersama, berteman melalui sastra, dan saling membantu. Oke, mari kita langsung ke topik hari ini.
Apa itu "terhubung" dan bagaimana memahami middleware? Mari kita lihat artikel hari ini dengan pertanyaan.
Bagaimana cara memahami "middleware"?
Pemahaman saya adalah bahwa middleware adalah sesuatu yang mirip dengan filter, cara untuk menangani permintaan dan tanggapan antara klien dan aplikasi.
Jika proses pemrosesan HTTP dibandingkan dengan pengolahan limbah, middleware seperti lapisan filter. Setiap middleware menulis ulang permintaan atau (dan) data respons selama pemrosesan HTTP,
menyatakan, mengimplementasikan fungsi tertentu.
Apa itu "Connect"?
Kita dapat menganggap terhubung sebagai kumpulan sekelompok middleware. Untuk setiap permintaan, Connect akan menggunakan lapisan middleware untuk memfilter permintaan, yang masing -masing bisa mendapatkan permintaan HTTP.
TJ Holowaychuk mengatakan tentang koneksi bahwa ada dua jenis middleware. Salah satunya adalah filter:
Filter menangani permintaan, tetapi mereka tidak menanggapi permintaan (pikirkan log server).
Tipe kedua adalah penyedia, yang menanggapi permintaan tersebut. Anda dapat menggunakan beberapa middleware sesuai dengan kebutuhan Anda. Permintaan HTTP akan menanggapi permintaan melalui setiap middleware sampai salah satu middleware.
2. Pengantar middleware built-in dari Connect
Berikut ini adalah beberapa middleware utama dan contoh dijelaskan:
(1), cookieParser------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Cookies can also be encrypted via req.secret.
Salinan kode adalah sebagai berikut:
var connect = membutuhkan ('./ lib/connect');
var app = connect ()
.use (connect.cookieparser ('string rahasia'))
.use (function (req, res, next) {
req.cookies.website = "Hai, saya Bigbear!" ;
res.end (json.stringify (req.cookies));
}). Dengarkan (8888);
(2), sesi
Deskripsi: Middleware Manajemen Sesi
Ketergantungan: CookieParser
Parameter: Opsi
Opsi:
Kunci: Nama cookie, nilai default adalah connect.sid
Store: Sesi Penyimpanan Sesi
Rahasia: Enkripsi Cookie Sesi
Cookie: Konfigurasi Cookie Session, Nilai Default adalah {path: '/', httponly: true, maxage: null}
Proxy: Proxy terbalik untuk cookie yang aman, diimplementasikan melalui X-Forwarded-Proto
Opsi Cookie:
Cookie.Maxage: Nilai default adalah nol, menunjukkan bahwa cookie dihapus saat browser ditutup.
Salinan kode adalah sebagai berikut:
var connect = membutuhkan ('./ lib/connect');
var app = connect ()
.use (connect.logger ('dev'))
.use (connect.cookieparser ())
.use (connect.Session ({Secret: '123', cookie: {maxage: 60000}})))
.use (function (req, res, next) {
if (req.session.pv) {
res.setHeader ('tipe konten', 'teks/html');
res.write ('views:' + req.Session.pv);
res.end ();
req.Session.pv ++;
}kalau tidak{
req.Session.pv = 1;
res.end ('refresh');
}
})
.listen (8888);
Karena klien terus menyegarkan halaman "PV" dan jumlah pemeliharaan di "sesi" server akan terus meningkat.
(3), Bodyparser ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Salinan kode adalah sebagai berikut:
var connect = membutuhkan ('connect');
var app = connect ()
.use (connect.bodyparser ())
.use (function (req, res) {
res.end ('req.body =>' + json.stringify (req.body));
})
.listen (8888);
Ketiga, mari kita ambil contoh perbandingan dan lihat manfaat menggunakan middleware.
Salinan kode adalah sebagai berikut:
/*
* Pemrosesan file statis diimplementasikan menggunakan Connect
*/
var connect = membutuhkan ('connect');
Connect (connect.static (__ dirname + '/public')).listen(//listen
8888,
fungsi() {
console.log ('Connect dimulai pada port 8888');
}
);
/*
* Implementasi Menggunakan Node Native API
*/
var http = membutuhkan ('http');
http.createServer (
function (req, res) {
var url = membutuhkan ('url');
var fs = membutuhkan ('fs');
var pathname = __dirname + '/public' + url.parse (req.url) .pathname;
// Baca file lokal
fs.readfile (
Pathname,
fungsi (err, data) {
// Penanganan pengecualian
if (err) {
res.writeHead (500);
res.end ('500');
}
kalau tidak {
res.end (data);
}
}
);
}
) .listen (// dengarkan
8888,
fungsi() {
Console.log ('server http dimulai pada port 8888');
}
);
Meskipun API asli simpul telah menghabiskan begitu banyak baris kode, masih menyisakan banyak aspek dari server file statis sederhana yang belum diproses.
Misalnya: 404 dan pengecualian lainnya tidak diproses, tidak ada verifikasi keamanan jalur file dasar (pada kenyataannya, kita dapat mengakses seluruh sistem file OS), penanganan pengecualian global, dll.
Pada saat yang sama, Connect telah menangani semua masalah ini.
Empat, mari kita ringkas
(1) Memahami pemrosesan streaming middleware.
Salinan kode adalah sebagai berikut:
var app = connect ();
app.use (connect.staticcache ());
app.use (connect.static (__ dirname + '/public'));
app.use (connect.cookieparser ());
app.use (connect.Session ());
app.use (connect.query ());
app.use (connect.bodyparser ());
app.use (connect.csrf ());
app.use (function (req, res, next) {
// middleware
});
app.listen (8888);
(2) Diferensiasi antara metode implementasi asli dan implementasi middleware.
(3) Melalui contoh -contoh middleware di atas, kami dapat memahami skenario penggunaan dan penggunaan dan merujuk ke dokumen yang relevan untuk menguasai penggunaan dasar middleware lainnya.