Bóc tách req.params Node.js: VIP Pass cho API của bạn
Nodejs

Bóc tách req.params Node.js: VIP Pass cho API của bạn

Author

Admin System

@root

Ngày xuất bản

23 Mar, 2026

Lượt xem

2 Lượt

"req.params"

Chào các đệ tử công nghệ của anh Creyt! Hôm nay, chúng ta sẽ cùng bóc tách một khái niệm mà nghe thì có vẻ "lú", nhưng thực ra nó lại là "key" để API của các bạn trở nên "chanh sả" và linh hoạt hơn rất nhiều: req.params. Hãy tưởng tượng thế này, API của bạn là một cái club đêm cực chất, và mỗi đường link (URL) là một cánh cửa. Để vào được đúng khu vực VIP của một người cụ thể, bạn cần một loại "vé đặc biệt" được in thẳng lên cánh cửa đó. req.params chính là thứ giúp bạn đọc được cái "vé đặc biệt" đó!

req.params là gì và để làm gì?

req.params trong Node.js (cụ thể là khi dùng framework Express) là một object chứa các thông tin động được trích xuất từ URL của request. Nó giống như khi bạn có một con đường mà trên đó có những "biển số xe" được định nghĩa sẵn trong cấu trúc đường đi vậy.

Khi bạn định nghĩa một route trong Express, bạn có thể đặt các placeholder (chỗ giữ chỗ) bằng cách dùng dấu hai chấm (:) trước tên biến. Ví dụ: /users/:id. Cái :id này chính là một parameter (tham số).

Khi có một request gửi đến /users/123, Express sẽ tự động bắt lấy 123 và nhét nó vào object req.params với key là id. Vậy là, req.params sẽ trông như thế này: { id: '123' }.

Đơn giản là để xác định một tài nguyên (resource) cụ thể mà bạn muốn tương tác. Bạn muốn lấy thông tin của user có ID là 5? Dùng /users/5. Muốn xem một bài post cụ thể? Dùng /posts/hoc-req-params. Nó giúp API của bạn tuân thủ nguyên tắc RESTful, tạo ra các URL sạch sẽ, dễ đọc và dễ quản lý.

Code Ví Dụ Minh Họa

Để các bạn dễ hình dung, anh Creyt có một ví dụ "nhỏ mà có võ" đây:

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

// Route cơ bản với 1 parameter
app.get('/users/:userId', (req, res) => {
    const userId = req.params.userId; // Trích xuất userId từ URL
    console.log(`User ID requested: ${userId}`);
    res.send(`Chào mừng user có ID: ${userId}! Đây là thông tin của bạn.`);
});

// Route với nhiều parameter
app.get('/products/:category/:productId', (req, res) => {
    const { category, productId } = req.params; // Dùng destructuring cho gọn
    console.log(`Category: ${category}, Product ID: ${productId}`);
    res.send(`Bạn đang xem sản phẩm ${productId} thuộc danh mục ${category}.`);
});

// Bắt đầu server
app.listen(port, () => {
    console.log(`Server chạy "phà phà" ở http://localhost:${port}`);
    console.log(`Thử truy cập:`)
    console.log(`- http://localhost:${port}/users/genz_dev`);
    console.log(`- http://localhost:${port}/products/laptop/macbook-pro-m2`);
});

Khi chạy đoạn code trên, bạn có thể truy cập:

Illustration

  • http://localhost:3000/users/genz_dev -> Server sẽ trả về "Chào mừng user có ID: genz_dev! Đây là thông tin của bạn."
  • http://localhost:3000/products/laptop/macbook-pro-m2 -> Server sẽ trả về "Bạn đang xem sản phẩm macbook-pro-m2 thuộc danh mục laptop."

Mẹo hay và Best Practices từ anh Creyt

  1. Validate là "chân ái": Luôn luôn validate (kiểm tra tính hợp lệ) các giá trị từ req.params. Ví dụ, nếu bạn mong đợi một số nguyên (ID), hãy đảm bảo nó thực sự là số và không phải là một chuỗi lung tung. Ai biết được "đệ tử" nào đó sẽ cố tình gửi /users/hack_me chứ?

    app.get('/users/:userId', (req, res) => {
        const userId = parseInt(req.params.userId); // Chuyển đổi sang số nguyên
        if (isNaN(userId)) {
            return res.status(400).send('ID user không hợp lệ, "nhức cái đầu" quá!');
        }
        // Xử lý logic với userId hợp lệ
        res.send(`User ID hợp lệ: ${userId}`);
    });
    
  2. Đặt tên "có tâm": Đặt tên parameter rõ ràng, dễ hiểu (ví dụ: userId thay vì id nếu có nhiều loại ID khác nhau). Điều này giúp code của bạn dễ đọc và dễ bảo trì hơn rất nhiều.

  3. Phân biệt req.params vs req.query vs req.body:

    • req.params dùng để xác định một tài nguyên cụ thể (ví dụ: /products/123 -> sản phẩm có ID 123). Nó là một phần của URL path và là bắt buộc để định danh tài nguyên.
    • req.query dùng để lọc, sắp xếp, phân trang (ví dụ: /products?category=laptop&sort=price). Nó nằm sau dấu ? trong URL và là tùy chọn.
    • req.body dùng cho dữ liệu gửi kèm trong request body (thường là các request POST, PUT), ví dụ khi gửi form đăng ký hoặc tạo mới một tài nguyên.
  4. Tránh xung đột: Đảm bảo các route parameters không xung đột với các route tĩnh. Ví dụ, nếu bạn có /users/new/users/:userId, hãy đặt route tĩnh (/users/new) lên trước để Express không nhầm lẫn new là một userId.

Ứng dụng thực tế và khi nào nên dùng?

req.params là "người bạn thân" của bạn trong hầu hết các ứng dụng web và API hiện đại. Bạn sẽ thấy nó xuất hiện "nhan nhản" ở khắp mọi nơi:

  • Website thương mại điện tử (Shopee, Tiki): Khi bạn truy cập /products/ao-thun-nam-sieu-cap-vip-pro-12345 để xem chi tiết một sản phẩm cụ thể.
  • Mạng xã hội (Facebook, Twitter): /profile/creyt_dev hoặc /posts/987654321 để xem trang cá nhân của Creyt hoặc một bài đăng cụ thể.
  • Blog (Medium, Dev.to): /creyt/how-to-master-req-params-in-nodejs để đọc bài viết cụ thể của tác giả Creyt.
  • API của bạn: Bất cứ khi nào bạn muốn lấy, cập nhật, xóa một mục cụ thể trong database (ví dụ: /api/v1/users/5, /api/v1/products/delete/10).

Anh Creyt đã từng thử dùng req.query để lấy ID trong một số trường hợp, nhưng sau này mới thấy req.params mới là chuẩn mực RESTful cho việc xác định tài nguyên. Nên dùng req.params khi:

  • Bạn cần một định danh duy nhất (unique identifier) cho một tài nguyên.
  • Cấu trúc URL của bạn cần phản ánh hệ thống phân cấp tài nguyên (ví dụ: /users/:userId/posts/:postId).
  • Bạn muốn URL trông "sạch sẽ", dễ đọc, và trực quan hơn về tài nguyên đang được truy cập.

Thử nghiệm đi, các đệ tử! Chạy code ví dụ, thay đổi ID, thay đổi category, và các bạn sẽ thấy sức mạnh của req.params ngay lập tức. Cứ coi nó như là GPS dẫn đường cho API của bạn đến đúng địa chỉ vậy. Nắm vững cái này, là các bạn đã có thêm một skill "xịn sò" để xây dựng các API "đỉnh của chóp" rồi đó!

Thuộc Series: Nodejs

Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!

#tech #cyberpunk #laravel
Chỉnh sửa bài viết

Bình luận (0)

Vui lòng Đăng Nhập để Bình luận

Hỗ trợ Markdown cơ bản
Nguyễn Văn A
1 ngày trước

Tính năng này đỉnh quá ad ơi, chờ mãi mới thấy một blog Tiếng Việt có UI/UX xịn như vầy!