Cách xử lý tham số truy vấn trong Node.js Express

Tìm hiểu cách xử lý tham số truy vấn trong Node.js Express một cách hiệu quả. Hướng dẫn toàn diện này đề cập đến mọi thứ từ xử lý cơ bản đến xác thực nâng cao và các phương pháp tốt nhất.

Minh Triết

Minh Triết

3 tháng 6 2025

Cách xử lý tham số truy vấn trong Node.js Express

Chào các bạn lập trình viên! Hôm nay, chúng ta sẽ khám phá thế giới tham số truy vấn trong Node.js Express. Cho dù bạn là người mới bắt đầu hay là một nhà phát triển dày dạn kinh nghiệm, hiểu cách xử lý tham số truy vấn một cách hiệu quả là điều cực kỳ quan trọng để xây dựng các API mạnh mẽ. Vậy nên, hãy thắt dây an toàn và hãy sẵn sàng nâng cao kỹ năng Express.js của bạn!

Trước khi bắt đầu, một lời chào nhanh đến Apidog – công cụ lý tưởng cho tài liệu và thử nghiệm API của bạn. Nó miễn phí, mạnh mẽ, và hoàn toàn phù hợp với hành trình phát triển API của bạn. Đừng quên tải Apidog miễn phí và làm cho cuộc sống của bạn dễ dàng hơn!

button

Tham Số Truy Vấn Là Gì?

Đầu tiên, hãy làm rõ tham số truy vấn là gì. Khi bạn gửi yêu cầu GET đến máy chủ, bạn có thể bao gồm dữ liệu bổ sung bằng cách sử dụng tham số truy vấn. Những tham số này là một phần của URL và thường được sử dụng để lọc, sắp xếp, hoặc tùy chỉnh dữ liệu được trả về bởi máy chủ.

Chẳng hạn, nếu bạn đang xây dựng một API để lấy dữ liệu người dùng, bạn có thể muốn lấy người dùng dựa trên độ tuổi hoặc vị trí của họ. Đây là cách mà một URL điển hình với tham số truy vấn có thể trông như thế nào:

http://example.com/users?age=25&location=NY

Trong URL này, age=25location=NY là các tham số truy vấn.

Thiết Lập Môi Trường Node.js Của Bạn

Trước khi chúng ta có thể bắt đầu làm việc với các tham số truy vấn, chúng ta cần thiết lập môi trường Node.js của mình. Nếu bạn chưa có, hãy chắc chắn rằng bạn đã cài đặt Node.js. Bạn có thể tải xuống từ trang web chính thức Node.js.

Ngay khi bạn đã cài đặt Node.js, hãy tạo một thư mục dự án mới và khởi tạo nó bằng npm:

mkdir express-query-params
cd express-query-params
npm init -y

Tiếp theo, cài đặt Express:

npm install express

Tạo Một Máy Chủ Express Cơ Bản

Giờ đây, môi trường của chúng ta đã được thiết lập, hãy tạo một máy chủ Express cơ bản. Tạo một tệp mới có tên server.js và thêm mã sau:

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

app.get('/', (req, res) => {
    res.send('Chào, thế giới!');
});

app.listen(port, () => {
    console.log(`Máy chủ đang chạy trên http://localhost:${port}`);
});

Chạy máy chủ của bạn bằng lệnh sau:

node server.js

Bạn sẽ thấy thông điệp "Máy chủ đang chạy trên http://localhost:3000". Mở trình duyệt của bạn và điều hướng đến http://localhost:3000 để xem "Chào, thế giới!" được hiển thị trên màn hình.

Xử Lý Yêu Cầu GET Với Tham Số Truy Vấn

Giờ đây, chúng ta đã có một máy chủ cơ bản hoạt động, hãy thêm một số chức năng để xử lý các tham số truy vấn.

Ví Dụ 1: Tham Số Truy Vấn Đơn Giản

Chúng ta sẽ bắt đầu với một ví dụ đơn giản. Hãy sửa đổi máy chủ của chúng ta để xử lý yêu cầu GET với tham số truy vấn. Cập nhật tệp server.js của bạn như sau:

app.get('/users', (req, res) => {
    const age = req.query.age;
    const location = req.query.location;

    res.send(`Người dùng có độ tuổi: ${age} và vị trí: ${location}`);
});

Trong mã này, chúng ta đang sử dụng req.query để truy cập các tham số truy vấn. Đối tượng req.query chứa tất cả các tham số truy vấn được gửi trong URL.

Kiểm Tra Điểm Cuối Của Bạn

Khởi động lại máy chủ của bạn và điều hướng đến URL sau trong trình duyệt:

http://localhost:3000/users?age=25&location=NY

Bạn sẽ thấy thông điệp "Người dùng có độ tuổi: 25 và vị trí: NY".

Ví Dụ 2: Xử Lý Nhiều Tham Số Truy Vấn

Hãy nâng cao hơn một bước và xử lý nhiều tham số truy vấn hiệu quả hơn. Cập nhật tệp server.js của bạn để xử lý các kịch bản phức tạp hơn:

app.get('/search', (req, res) => {
    const { term, limit, page } = req.query;

    res.send(`Tìm kiếm: ${term}, Giới hạn: ${limit}, Trang: ${page}`);
});

Trong ví dụ này, chúng ta đang tách đối tượng req.query để lấy các tham số trực tiếp. Điều này làm cho mã sạch hơn và dễ đọc hơn.

Kiểm Tra Điểm Cuối Của Bạn

Khởi động lại máy chủ của bạn và điều hướng đến URL sau trong trình duyệt:

http://localhost:3000/search?term=nodejs&limit=10&page=2

Bạn sẽ thấy thông điệp "Tìm kiếm: nodejs, Giới hạn: 10, Trang: 2".

Xác Thực Tham Số Truy Vấn

Trong khi việc xử lý tham số truy vấn là tuyệt vời, điều quan trọng là xác thực chúng để đảm bảo API của bạn hoạt động đúng cách và an toàn. Hãy thêm một số xác nhận cho các tham số truy vấn của chúng ta.

Ví Dụ 3: Xác Thực Cơ Bản

Cập nhật tệp server.js của bạn để bao gồm logic xác thực:

app.get('/products', (req, res) => {
    const { category, price } = req.query;

    if (!category || !price) {
        return res.status(400).send('Thiếu danh mục hoặc giá');
    }

    res.send(`Danh mục: ${category}, Giá: ${price}`);
});

Trong ví dụ này, chúng ta đang kiểm tra xem các tham số truy vấn categoryprice có tồn tại hay không. Nếu một trong số chúng bị thiếu, chúng ta trả về mã trạng thái 400 với thông điệp lỗi.

Kiểm Tra Điểm Cuối Của Bạn

Khởi động lại máy chủ của bạn và điều hướng đến URL sau trong trình duyệt:

http://localhost:3000/products?category=electronics&price=100

Bạn sẽ thấy thông điệp "Danh mục: electronics, Giá: 100".

Hãy thử truy cập URL mà không có một trong các tham số truy vấn:

http://localhost:3000/products?category=electronics

Bạn sẽ thấy thông điệp lỗi "Thiếu danh mục hoặc giá".

Xử Lý Tham Số Truy Vấn Nâng Cao Với Middleware

Các hàm middleware trong Express là một cách mạnh mẽ để thêm chức năng bổ sung cho các tuyến đường của bạn. Hãy xem chúng ta có thể sử dụng middleware để xử lý các tham số truy vấn hiệu quả hơn như thế nào.

Ví Dụ 4: Middleware Để Xác Thực Tham Số Truy Vấn

Tạo một tệp mới có tên middleware.js và thêm mã sau:

const validateQueryParams = (req, res, next) => {
    const { category, price } = req.query;

    if (!category || !price) {
        return res.status(400).send('Thiếu danh mục hoặc giá');
    }

    next();
};

module.exports = validateQueryParams;

Trong hàm middleware này, chúng tôi đang xác thực các tham số truy vấn và gọi next() để chuyển quyền kiểm soát cho middleware hoặc hàm xử lý tuyến tiếp theo nếu xác thực thành công.

Sử Dụng Middleware Trong Các Tuyến Đường Của Bạn

Cập nhật tệp server.js của bạn để sử dụng middleware:

const validateQueryParams = require('./middleware');

app.get('/products', validateQueryParams, (req, res) => {
    const { category, price } = req.query;

    res.send(`Danh mục: ${category}, Giá: ${price}`);
});

Giờ đây, middleware validateQueryParams sẽ được thực thi trước khi hàm xử lý tuyến chạy, đảm bảo rằng các tham số truy vấn đã được xác thực.

Sử Dụng Apidog Để Tài Liệu Và Thử Nghiệm API

Như đã hứa, hãy nói về Apidog. Đây là một công cụ tuyệt vời để tài liệu và thử nghiệm các API của bạn. Với Apidog, bạn có thể tạo tài liệu API tương tác, kiểm tra các điểm cuối của bạn và đảm bảo mọi thứ hoạt động như mong đợi.

button

Tạo Tài Liệu API

Để tạo tài liệu API cho ứng dụng Express của bạn, bạn có thể sử dụng Apidog. Trong dự án, bạn có thể tạo một API mới. Tài liệu là bản thiết kế của REST API, mô tả các tài nguyên, hoạt động và tham số của nó. Để tạo một API mới, nhấp vào nút "+" trên trang dự án.

Tạo một REST API bằng Apidog

Kiểm Tra API Của Bạn Với Apidog

Sau khi tài liệu của bạn đã được thiết lập, bạn có thể kiểm tra các điểm cuối API của mình trực tiếp từ giao diện Apidog. Điều này giúp bạn dễ dàng xác minh rằng các tham số truy vấn và phản hồi của bạn đang hoạt động đúng cách.

Điền vào các phương thức HTTP, mô hình yêu cầu/đáp ứng, tham số truy vấn, tiêu đề, v.v.

Điền thông tin cơ bản để tạo một REST API tại Apidog

Ngay khi tất cả các API đã được phát triển, bạn có thể nhấp vào nút "Gửi" để thử nghiệm các API của bạn.

Kiểm tra REST API tại Apidog

Các Thực Hành Tốt Nhất Khi Làm Việc Với Tham Số Truy Vấn

Bây giờ chúng ta đã đề cập đến những điều cơ bản, hãy thảo luận về một số thực hành tốt nhất khi làm việc với các tham số truy vấn trong Node.js Express.

Xác Thực Các Tham Số Của Bạn: Luôn xác thực các tham số truy vấn để đảm bảo API của bạn an toàn và đáng tin cậy. Sử dụng middleware để giữ cho mã của bạn sạch sẽ và dễ duy trì.

Sử Dụng Giá Trị Mặc Định: Cung cấp giá trị mặc định cho các tham số truy vấn tùy chọn để làm cho API của bạn thân thiện với người dùng hơn. Điều này có thể giúp tránh lỗi và cải thiện trải nghiệm người dùng.

Tài Liệu API Của Bạn: Sử dụng các công cụ như Apidog để tài liệu các điểm cuối API của bạn và các tham số truy vấn. Điều này giúp các nhà phát triển khác dễ dàng hiểu và sử dụng API của bạn.

Xử Lý Lỗi Một Cách Tốt: Trả về các thông điệp lỗi có nghĩa khi các tham số truy vấn bị thiếu hoặc không hợp lệ. Điều này giúp người dùng hiểu điều gì đã sai và cách khắc phục nó.

Giữ Cho Nó Đơn Giản: Tránh sử dụng quá nhiều tham số truy vấn trong một điểm cuối duy nhất. Nếu API của bạn yêu cầu nhiều tham số, hãy xem xét việc chia nó thành nhiều điểm cuối để cải thiện độ rõ ràng và khả năng sử dụng.

Kết Luận

Xử lý các tham số truy vấn trong Node.js Express là một kỹ năng cơ bản cho bất kỳ nhà phát triển API nào. Bằng cách làm theo các ví dụ và thực hành tốt nhất trong hướng dẫn này, bạn sẽ được trang bị tốt để xây dựng các API mạnh mẽ và thân thiện với người dùng.

Và hãy nhớ, Apidog có mặt để giúp hành trình phát triển API của bạn trở nên dễ dàng hơn. Tải Apidog miễn phí và bắt đầu tài liệu và thử nghiệm API của bạn như một chuyên gia!

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API