Perisian tengah ialah konsep yang sangat penting dalam pembangunan web Ia membolehkan kami melakukan pelbagai pemprosesan permintaan dan respons. Sebagai bahasa sebelah pelayan yang sangat popular, Node.js juga menyediakan sokongan kuat dari segi perisian tengah.
Dalam Node.js, middleware ialah fungsi yang melaksanakan beberapa bentuk pemprosesan pada permintaan HTTP dan menghantarnya ke middleware seterusnya. Setiap perisian tengah boleh melakukan pemprosesan tersuai permintaan atau respons untuk memenuhi keperluan tertentu.
Di bawah, kami akan memperkenalkan konsep dan kaedah pelaksanaan middleware dengan hanya melaksanakan middleware Node.js.
Fungsi utama perisian tengah ialah memproses permintaan dan respons HTTP. Walau bagaimanapun, mereka juga boleh melakukan pelbagai tugas lain, seperti menghuraikan badan permintaan, ralat log dan maklumat permintaan, dsb.
Perisian tengah boleh menjadi sebarang fungsi, tetapi ia mesti mengikut format tertentu. Berikut ialah format middleware asas:
function (req, res, next) { // 处理请求和响应 next(); // 调用下一个中间件 }
Fungsi ini boleh mengakses objek permintaan (req) dan objek respons (res). Objek req mengandungi maklumat tentang permintaan HTTP yang diterima, seperti pengepala permintaan, badan dan kaedah. Objek res digunakan untuk menghantar respons HTTP kepada klien.
Dalam fungsi ini kita boleh melaksanakan sebarang fungsi untuk mengendalikan permintaan dan respons. Walau bagaimanapun, untuk memastikan susunan yang betul, kita juga perlu memanggil fungsi next() untuk memanggil middleware seterusnya. Jika kami tidak memanggil next(), permintaan itu tidak akan sampai ke middleware seterusnya.
Kami boleh menggunakan rangka kerja Express untuk membangunkan perisian tengah, tetapi di sini, kami akan menggunakan modul HTTP Node.js sendiri untuk melaksanakan perisian tengah.
Pertama, kita perlu memasang modul HTTP Node.js. Ia boleh dipasang melalui:
npm install http
Berikut ialah perisian tengah Node.js yang mudah yang akan log URL permintaan dan masa permintaan pada setiap permintaan:
const http = require('http'); const server = http.createServer(function (req, res) { console.log(`Received request for ${req.url} at ${new Date()}`); res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World '); }); server.listen(3000, function () { console.log('Server listening on port 3000'); });
Dalam perisian tengah ini, kami menggunakan http. createServer() berfungsi untuk mencipta pelayan HTTP. Kami akan lulus fungsi di dalamnya yang akan dipanggil pada setiap permintaan.
Setiap kali kami menerima permintaan, kami log URL yang diminta dan masa semasa ke konsol dan menghantar respons "Hello World". Harap maklum bahawa kami juga menetapkan kod respons dan pengepala respons untuk memformatkan respons dengan betul.
Ini ialah contoh perisian tengah yang sangat mudah, tetapi ia menunjukkan beberapa konsep asas. Dengan menambahkan fungsi tambahan, seperti menghuraikan badan permintaan atau melaksanakan pengesahan, kami boleh menggunakan perisian tengah untuk membina aplikasi web yang sangat berkuasa.
Apabila kami menggunakan berbilang middleware dalam aplikasi Node.js, susunan pelaksanaan middleware adalah sangat penting. Secara lalai, perisian tengah akan dilaksanakan mengikut susunan ia ditambahkan pada aplikasi. Sebagai contoh, kod berikut mula-mula akan memaparkan maklumat pengelogan dan kemudian membalas permintaan HTTP:
app.use(function (req, res, next) { console.log('Received a request!'); next(); }); app.get('/', function (req, res) { res.send('Hello World!'); });
Walau bagaimanapun, jika kita ingin melaksanakan middleware dalam susunan tertentu, kita boleh menggunakan fungsi next() untuk mengawal aliran. Sebagai contoh, kod berikut akan mula-mula dilog, kemudian mengendalikan pengesahan HTTP, dan akhirnya membalas permintaan:
app.use(function (req, res, next) { console.log('Received a request!'); next(); }); app.use(function (req, res, next) { if (!req.user) { res.status(401).send('Unauthorized'); } else { next(); } }); app.get('/', function (req, res) { res.send('Hello World!'); });
Dalam contoh ini, jika tiada pengecam pengguna dalam pengepala permintaan, kami akan menghantar 401 Tanpa Kebenaran tindak balas. Jika tidak, kami akan memanggil fungsi next() untuk memulakan middleware seterusnya.
Perisian tengah ialah konsep yang sangat penting dalam pembangunan Node.js. Mereka membenarkan kami memproses permintaan dan respons HTTP. Dalam Node.js, perisian tengah ialah fungsi yang melaksanakan tindakan tersuai dalam rantaian permintaan. Setiap perisian tengah boleh melakukan pemprosesan tersuai permintaan atau respons untuk memenuhi keperluan tertentu. Kita boleh menggunakan rangka kerja Express untuk membangunkan perisian tengah, atau menggunakan modul HTTP Node.js sendiri. Apabila menggunakan berbilang middlewares, urutan di mana middlewares dilaksanakan adalah sangat penting. Kita boleh menggunakan fungsi next() untuk mengawal proses dan memastikan perisian tengah dilaksanakan dalam susunan tertentu.
Atas ialah kandungan terperinci Pelaksanaan ringkas perisian tengah nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!