0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng Dẫn Chi Tiết về Middleware trong Express.js

Đăng vào 2 tuần trước

• 4 phút đọc

Hướng Dẫn Chi Tiết về Middleware trong Express.js

Middleware là một phần quan trọng trong quy trình xử lý yêu cầu trong Express.js. Chúng là các hàm hoạt động giữa yêu cầu từ phía khách hàng và phản hồi từ máy chủ. Bài viết này sẽ cung cấp cho bạn cái nhìn sâu sắc về middleware trong Express.js, cách chúng hoạt động, và cách sử dụng chúng hiệu quả.

Nội Dung

  1. Giới thiệu về Middleware
  2. Các Loại Middleware
  3. Thực Hành Tốt Nhất
  4. Những Cạm Bẫy Thường Gặp
  5. Mẹo Tối Ưu Hiệu Suất
  6. Giải Quyết Vấn Đề
  7. Câu Hỏi Thường Gặp

Giới Thiệu về Middleware

Middleware thực chất là các hàm JavaScript cho phép bạn can thiệp vào quy trình xử lý yêu cầu và phản hồi. Mỗi hàm middleware có quyền truy cập vào ba đối tượng chính:

  • req - đối tượng yêu cầu
  • res - đối tượng phản hồi
  • next() - hàm chuyển điều khiển đến middleware tiếp theo.

Cách Định Nghĩa Middleware

Dưới đây là mẫu định nghĩa một hàm middleware:

javascript Copy
function middlewareName(req, res, next) {
  // Làm điều gì đó
  next(); // chuyển đến middleware tiếp theo
}

Nếu bạn quên gọi next(), vòng đời yêu cầu-đáp sẽ bị treo.

Các Loại Middleware

Express có 5 loại middleware chính:

  1. Middleware cấp ứng dụng
  2. Middleware cấp router
  3. Middleware tích hợp sẵn
  4. Middleware bên thứ ba
  5. Middleware xử lý lỗi

Middleware cấp ứng dụng

Middleware cấp ứng dụng được gán cho một đối tượng ứng dụng thông qua app.use() hoặc app.METHOD().

  • Chạy cho mọi yêu cầu hoặc các tuyến đường cụ thể.
javascript Copy
app.use((req, res, next) => {
  console.log("Middleware cấp ứng dụng đã được thực thi");
  next();
});

Middleware cấp router

Middleware cấp router hoạt động tương tự như middleware cấp ứng dụng, nhưng được gán cho một thể hiện của express.Router(). Điều này rất hữu ích cho việc xử lý các tuyến đường theo cách mô-đun.

javascript Copy
const router = express.Router();
router.use((req, res, next) => {
  console.log("Middleware cấp router đã được thực thi");
  next();
});
app.use("/api", router);

Middleware tích hợp sẵn

Middleware tích hợp sẵn đi kèm với Express theo mặc định. Một số middleware phổ biến là:

  • express.json() → phân tích dữ liệu JSON
  • express.urlencoded() → phân tích dữ liệu biểu mẫu
  • express.static() → phục vụ các tệp tĩnh
javascript Copy
app.use(express.json());
app.use(express.static("public"));

Middleware bên thứ ba

Bạn có thể cài đặt các middleware bên thứ ba thông qua npm để thêm các tính năng bổ sung. Một số ví dụ:

  • morgan → ghi nhật ký yêu cầu
  • cookie-parser → phân tích cookie
  • cors → xử lý yêu cầu giữa các nguồn
  • helmet → thêm tiêu đề bảo mật
javascript Copy
const morgan = require("morgan");
app.use(morgan("dev"));

Middleware xử lý lỗi

Middleware xử lý lỗi là middleware đặc biệt với 4 tham số: (err, req, res, next). Nó được sử dụng để xử lý lỗi toàn cục trong ứng dụng.

javascript Copy
app.use((err, req, res, next) => {
  console.error(err.message);
  res.status(500).send("Có lỗi xảy ra!");
});

Thực Hành Tốt Nhất

  • Sắp xếp middleware theo thứ tự: Middleware sẽ được thực thi theo thứ tự mà chúng được định nghĩa. Đảm bảo rằng bạn định nghĩa các middleware xử lý lỗi sau cùng.
  • Ghi nhật ký: Sử dụng middleware ghi nhật ký để theo dõi các yêu cầu và phản hồi.
  • Kiểm tra điều kiện: Sử dụng middleware để kiểm tra các điều kiện trước khi tiếp tục với yêu cầu, như xác thực người dùng.

Những Cạm Bẫy Thường Gặp

  • Quên gọi next(): Điều này có thể khiến yêu cầu bị treo.
  • Lỗi trong middleware: Nếu có lỗi trong middleware, hãy đảm bảo bạn đã sử dụng middleware xử lý lỗi để xử lý chúng.

Mẹo Tối Ưu Hiệu Suất

  • Giảm thiểu số lượng middleware: Sử dụng chỉ các middleware cần thiết để giảm thiểu độ trễ.
  • Tối ưu hóa middleware bên thứ ba: Đảm bảo rằng bạn chỉ sử dụng các middleware bên thứ ba khi thực sự cần thiết.

Giải Quyết Vấn Đề

Nếu gặp phải vấn đề với middleware, hãy kiểm tra kỹ các thông báo lỗi và xác minh rằng bạn đã định nghĩa mọi middleware đúng cách.

Câu Hỏi Thường Gặp

Middleware là gì?
Middleware là các hàm cho phép bạn can thiệp vào quy trình xử lý yêu cầu và phản hồi trong Express.js.

Tôi có thể sử dụng nhiều middleware không?
Có, bạn có thể sử dụng nhiều middleware trong một ứng dụng Express và chúng sẽ được thực thi theo thứ tự mà chúng được định nghĩa.

Làm thế nào để xử lý lỗi trong middleware?
Sử dụng middleware xử lý lỗi với 4 tham số để xử lý các lỗi phát sinh trong ứng dụng.

Kết Luận

Middleware là một phần quan trọng trong việc quản lý và xử lý yêu cầu trong Express.js. Bằng cách hiểu rõ về các loại middleware và cách sử dụng chúng, bạn có thể tối ưu hóa ứng dụng của mình một cách hiệu quả. Hãy thực hành và áp dụng các kỹ thuật đã học để nâng cao kỹ năng lập trình của bạn! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại hỏi trong cộng đồng phát triển!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào