Hướng dẫn Routing và middleware trong Express

Routing và middleware là hai khái niệm quan trọng trong Node.js và framework Express để xây dựng ứng dụng web.

Routing:

  • Routing là quá trình xác định cách xử lý yêu cầu từ client và phản hồi lại với các tài nguyên tương ứng trên server.
  • Trong Express, chúng ta có thể định nghĩa các route bằng cách chỉ định phương thức HTTP (GET, POST, PUT, DELETE, vv.) và đường dẫn URL tương ứng.
  • Mỗi route có thể có một hoặc nhiều hàm xử lý (handler) để thực hiện các công việc như xử lý yêu cầu, truy xuất cơ sở dữ liệu, và gửi phản hồi cho client.

Middleware:

  • Middleware là các hàm xử lý được chạy tuần tự trước khi yêu cầu đến tay hàm xử lý cuối cùng của route.
  • Chúng được sử dụng để thực hiện các chức năng chung và xử lý các tác vụ trung gian, chẳng hạn như xác thực, ghi lại log, xử lý lỗi, vv.
  • Middleware có thể được áp dụng cho toàn bộ ứng dụng hoặc chỉ định cho các route cụ thể.
  • Mỗi middleware nhận các đối số req (yêu cầu) và res (phản hồi) và có thể thực hiện các xử lý, chuyển tiếp yêu cầu đến middleware tiếp theo hoặc kết thúc quá trình xử lý bằng cách gửi phản hồi cho client.

Ví dụ kết hợp Routing và Middleware trong Express:

const express = require('express');
const app = express();

// Middleware tùy chỉnh
const logger = (req, res, next) => {
  console.log('Một yêu cầu mới đến!');
  next();
};

// Sử dụng middleware cho tất cả các route
app.use(logger);

// Route chính
app.get('/', (req, res) => {
  res.send('Chào mừng đến trang chủ!');
});

// Route khác
app.get('/about', (req, res) => {
  res.send('Đây là trang giới thiệu!');
});

// Khởi động server
app.listen(3000, () => {
  console.log('Server đang lắng nghe trên cổng 3000...');
});

Trong ví dụ này, chúng ta đã định nghĩa một middleware tùy chỉnh có tên là logger để ghi lại mỗi yêu cầu mới đến server. Middleware này được sử dụng bằng cách sử dụng phương thức app.use() để áp dụng nó cho tất cả các route trong ứng dụng.

Sau đó, chúng ta đã định nghĩa hai route chính: một cho trang chủ ('/') và một cho trang giới thiệu ('/about'). Mỗi khi có yêu cầu đến các URL này, middleware logger sẽ được gọi trước, ghi lại thông tin về yêu cầu, và sau đó hàm xử lý tương ứng của route sẽ được gọi.

Kết quả là mỗi khi có yêu cầu đến server, bạn sẽ thấy thông báo "Một yêu cầu mới đến!" được in ra trong console.

Ví dụ này cho thấy cách kết hợp giữa Routing và Middleware trong Express, cho phép bạn thực hiện các xử lý chung cho tất cả các route hoặc cho một nhóm route cụ thể trong ứng dụng của bạn.