Express.js ialah salah satu rangka kerja paling popular untuk membina aplikasi web dengan Node.js. Ia memudahkan penciptaan API RESTful dan membolehkan anda menstruktur aplikasi dengan cara modular. Salah satu konsep utama dalam Express.js ialah penggunaan perisian tengah. Dalam artikel ini, kami akan memahami apa itu middleware, cara ia berfungsi dan cara anda boleh mencipta sendiri.
Middlewares ialah fungsi yang mempunyai akses kepada objek permintaan (req), objek respons (res) dan fungsi next(). Mereka boleh mengubah suai permintaan dan/atau objek tindak balas dan mengawal kitaran permintaan-tindak balas. Perisian tengah boleh melakukan beberapa perkara, seperti:
Tandatangan asas perisian tengah dalam Express.js ialah:
function middleware(req, res, next) { // Lógica do middleware next(); // Chama o próximo middleware }
Dalam Express, kita boleh menemui beberapa jenis middleware:
Apabila permintaan diterima, ia melalui "rantaian perisian tengah". Setiap perisian tengah boleh memproses permintaan dan, pada penghujung pelaksanaannya, memutuskan sama ada untuk memanggil perisian tengah seterusnya (menggunakan fungsi next()) atau memuktamadkan respons.
const express = require('express'); const app = express(); // Middleware global app.use((req, res, next) => { console.log('Request Type:', req.method); next(); }); // Middleware específico para a rota /user app.use('/user', (req, res, next) => { console.log('Middleware para /user'); next(); }); app.get('/user', (req, res) => { res.send('Página do Usuário'); }); app.listen(3000, () => { console.log('Servidor rodando na porta 3000'); });
Selain perisian tengah yang disediakan oleh Express atau pihak ketiga, anda boleh mencipta perisian tengah anda sendiri untuk mengendalikan fungsi tertentu, seperti pengesahan, pengelogan atau manipulasi data.
Contoh perisian tengah pengesahan mudah:
function autenticar(req, res, next) { const token = req.header('Authorization'); if (!token) { return res.status(401).send('Acesso negado. Token não fornecido.'); } try { // Lógica para validar o token next(); // Continua para o próximo middleware } catch (err) { res.status(400).send('Token inválido.'); } } app.use(autenticar); // Aplica o middleware para todas as rotas
Express juga membenarkan penggunaan middleware pihak ketiga, yang boleh dipasang melalui npm. Antara yang paling popular ialah:
Memasang dan menggunakan Morgan:
npm install morgan
const morgan = require('morgan'); // Middleware de log app.use(morgan('tiny')); app.get('/', (req, res) => { res.send('Hello World'); });
Tertib di mana anda mentakrifkan middleware adalah penting, kerana ia dilaksanakan dalam urutan di mana ia didaftarkan. Contohnya, jika anda mentakrifkan perisian tengah pengesahan selepas laluan yang memerlukan pengesahan, ia tidak akan dijalankan untuk laluan itu.
app.use(express.json()); // Middleware para parsear JSON app.post('/secure-data', autenticar, (req, res) => { res.send('Acesso a dados seguros'); });
Jika perisian tengah tidak memanggil fungsi next(), ia akan mengganggu kitaran permintaan-tindak balas. Ini boleh berguna dalam kes di mana anda ingin memuktamadkan permintaan dalam perisian tengah itu sendiri, seperti dalam semakan pengesahan:
function autenticar(req, res, next) { if (!req.header('Authorization')) { return res.status(403).send('Não autorizado'); } next(); }
Perisian tengah ialah bahagian penting dalam membina aplikasi dengan Express.js, membolehkan fleksibiliti dan modulariti yang hebat. Dengan menguasai penggunaan perisian tengah, anda akan dapat menstrukturkan API anda dengan cekap, menggunakan semula kod dan menambah ciri seperti pengesahan, keselamatan dan manipulasi data dengan cara yang mudah dan berskala.
Jika anda belum lagi menggunakan perisian tengah tersuai dalam projek anda, mulakan dengan sesuatu yang mudah, seperti perisian tengah pengelogan atau pengesahan dan rasai modulariti dan fleksibiliti yang ditawarkan oleh Express.js!
Adakah anda menyukai artikel itu? Jangan lupa berkongsi dengan rakan pembangun anda!
Atas ialah kandungan terperinci Memahami dan Melaksanakan Middleware dalam Express.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!