Rumah  >  Artikel  >  hujung hadapan web  >  Memahami dan Melaksanakan Middleware dalam Express.js

Memahami dan Melaksanakan Middleware dalam Express.js

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-09-22 06:21:45979semak imbas

Entendendo e Implementando Middlewares no Express.js

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.

Apakah Middlewares?

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:

  • Jalankan sebarang kod.
  • Ubah suai permintaan dan respons.
  • Tutup kitaran permintaan-tindak balas.
  • Panggil perisian tengah seterusnya dalam rantaian.

Tandatangan asas perisian tengah dalam Express.js ialah:

function middleware(req, res, next) {
    // Lógica do middleware
    next(); // Chama o próximo middleware
}

Jenis Middleware

Dalam Express, kita boleh menemui beberapa jenis middleware:

  1. Perisian Tengah Aplikasi: Ini ialah perisian tengah yang mempengaruhi keseluruhan aplikasi atau satu set laluan.
  2. Perisian Tengah Laluan: Khusus untuk satu atau lebih laluan.
  3. Perisian Tengah Bersepadu: Seperti express.json() dan express.static(), disediakan terus oleh Express.
  4. Perisian Tengah Pihak Ketiga: Seperti morgan atau cors, yang boleh anda pasang untuk melanjutkan fungsi Express.

Bagaimana Middleware Berfungsi?

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');
});

Mencipta Perisian Tengah Tersuai

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

Perisian Tengah Pihak Ketiga

Express juga membenarkan penggunaan middleware pihak ketiga, yang boleh dipasang melalui npm. Antara yang paling popular ialah:

  • morgan: Untuk log HTTP.
  • topi keledar: Untuk keselamatan, tetapkan pengepala HTTP pelindung.
  • kors: Untuk mendayakan CORS (Perkongsian Sumber Rentas Asal).

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');
});

Perintah Middleware

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');
});

Memuktamadkan Middleware

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();
}

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn