ExpressJs

Dưới đây là giải thích chi tiết cho từng phần bạn hỏi về Express.js và các khía cạnh liên quan trong Node.js:


1. Express.js là gì?

Express.js là một web framework nhẹ và linh hoạt cho Node.js, dùng để xây dựng các ứng dụng web và API. Nó trừu tượng hóa nhiều thao tác phức tạp của Node.js thuần (native) và cung cấp một bộ công cụ mạnh mẽ để xử lý HTTP request, middleware, routing, và nhiều thứ khác.

Tại sao Express.js phổ biến:

  • Đơn giản và dễ học: Cấu trúc và cú pháp rõ ràng.

  • Middleware mạnh mẽ: Cho phép xử lý tuần tự các logic nghiệp vụ.

  • Routing linh hoạt: Dễ dàng cấu hình các đường dẫn (URL).

  • Tích hợp với nhiều hệ thống: Dễ kết nối với DB, template engine, auth, v.v.

  • Cộng đồng lớn: Có nhiều tài liệu, package và hỗ trợ.


2. Middleware trong Express là gì?

Middleware trong Express là các hàm trung gian có thể can thiệp vào quá trình xử lý request/response. Chúng có quyền:

  • Truy cập req, res

  • Kết thúc response

  • Gọi tiếp middleware tiếp theo (next)

Cú pháp:

function middlewareExample(req, res, next) {
  // xử lý logic ở đây
  next(); // chuyển tiếp đến middleware tiếp theo
}

Ví dụ: Logging middleware

app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

Các loại middleware:

  • Application-level (app.use)

  • Router-level (router.use)

  • Built-in (như express.json(), express.static())

  • Third-party (như body-parser, cors, morgan)


3. Routing trong Express hoạt động như thế nào?

Routing trong Express là cách để xác định các endpoint (URI) và phương thức HTTP tương ứng (GET, POST, PUT, DELETE...) mà ứng dụng phản hồi.

Cấu hình route cơ bản:

app.get('/hello', (req, res) => {
  res.send('Hello World');
});

Hỗ trợ nhiều HTTP method:

app.post('/users', createUser);
app.put('/users/:id', updateUser);
app.delete('/users/:id', deleteUser);

Router nhóm (Modular Routing):

const router = express.Router();

router.get('/products', getAllProducts);
router.post('/products', createProduct);

app.use('/api', router);

4. Làm thế nào để xử lý lỗi trong Express?

Express hỗ trợ middleware riêng để xử lý lỗi. Khi một middleware hoặc route handler gọi next(err), Express sẽ chuyển sang middleware xử lý lỗi có dạng:

app.use((err, req, res, next) => {
  console.error(err.stack); // log lỗi
  res.status(500).json({ message: 'Something went wrong', error: err.message });
});

Nguyên tắc xử lý lỗi tốt:

  • Luôn có một middleware error-handling ở cuối.

  • Luôn dùng try/catch trong các async function.

  • Tránh trả về stacktrace trong production.

Ví dụ dùng async/awaittry/catch:

app.get('/users/:id', async (req, res, next) => {
  try {
    const user = await findUserById(req.params.id);
    if (!user) throw new Error('User not found');
    res.json(user);
  } catch (err) {
    next(err); // truyền lỗi đến middleware xử lý lỗi
  }
});

✅ Tổng kết:

Tính năng

Mô tả

Express.js

Framework nhẹ để xây dựng ứng dụng web/API bằng Node.js.

Middleware

Hàm xử lý trung gian cho phép thao tác logic trước khi response được gửi.

Routing

Định tuyến các URL đến hàm xử lý phù hợp.

Xử lý lỗi

Dùng middleware cuối cùng với 4 đối số (err, req, res, next) để đảm bảo ứng dụng không crash.


Last updated