Query Parameters là các thông số (parameters) được truyền vào URL sau dấu ? để gửi dữ liệu từ client đến server trong các ứng dụng web. Trong Node.js, chúng được sử dụng để truyền dữ liệu động tới server thông qua các yêu cầu HTTP, đặc biệt là GET requests.

Cấu Trúc Cơ Bản của Query Parameters

Query Parameters xuất hiện trong URL với cú pháp như sau:

http://example.com/page?key1=value1&key2=value2

Trong đó:

  • ?: Bắt đầu của query string.
  • key1=value1: Cặp key-value (tham số và giá trị) đầu tiên.
  • &: Dùng để phân tách các cặp key-value trong query string.
  • key2=value2: Cặp key-value tiếp theo.

Ví dụ URL:

http://localhost:3000/search?query=javascript&category=books
  • query=javascript: Tham số query có giá trị là javascript.
  • category=books: Tham số category có giá trị là books.

Cách Lấy Query Parameters trong Node.js

Để lấy query parameters trong Node.js, bạn có thể sử dụng hai cách phổ biến dựa trên thư viện hoặc framework bạn đang sử dụng.

1. Sử dụng Native Node.js (Không Sử Dụng Thư Viện)

Trong Node.js, bạn có thể sử dụng module url để phân tích cú pháp (parse) URL và lấy query parameters.

Ví dụ:

const http = require('http');
const url = require('url');

http.createServer((req, res) => {
  const queryObject = url.parse(req.url, true).query;
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.write(`Query Parameters`);
  res.write(`Search query: ${queryObject.query}`);
  res.write(`Category: ${queryObject.category}`);
  res.end();
}).listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

Trong đoạn mã trên:

  • url.parse(req.url, true).query: Lấy phần query string từ URL và chuyển thành object.

Khi người dùng truy cập URL:

http://localhost:3000/search?query=javascript&category=books

Kết quả sẽ là:

Query Parameters
Search query: javascript
Category: books

2. Sử dụng Express.js

Express.js là một framework phổ biến trong Node.js giúp đơn giản hóa việc xử lý yêu cầu HTTP, bao gồm cả việc lấy query parameters.

Ví dụ với Express:

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

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

  res.send(`
    Query Parameters
    Search query: ${query}
    Category: ${category}
  `);
});

app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});
  • req.query: Là một object chứa các cặp key-value của query string. Bạn có thể truy cập các tham số qua req.query.key.

Khi người dùng truy cập URL:

http://localhost:3000/search?query=javascript&category=books

Kết quả sẽ là:

Query Parameters
Search query: javascript
Category: books

Ưu Điểm của Query Parameters

  • Truyền Dữ Liệu Đơn Giản: Query parameters giúp truyền dữ liệu động một cách đơn giản qua URL, rất hữu ích cho các trang tìm kiếm, lọc dữ liệu, hoặc phân trang.
  • Hiển Thị Trực Quan: Người dùng có thể thấy rõ dữ liệu đang được truyền ngay trên URL.
  • Bookmarkable: Các URL chứa query parameters có thể được lưu lại (bookmark) hoặc chia sẻ mà vẫn giữ nguyên dữ liệu đầu vào.

Hạn Chế của Query Parameters

  • Giới Hạn Kích Thước: Trình duyệt và server thường giới hạn độ dài của URL, vì vậy việc truyền dữ liệu lớn qua query string không phải là lựa chọn tốt.
  • Bảo Mật Thấp: Dữ liệu được truyền qua query parameters dễ dàng bị nhìn thấy bởi người dùng và có thể được chỉnh sửa một cách dễ dàng.

Kết Luận

Query Parameters là một công cụ hữu ích trong Node.js để truyền dữ liệu từ client đến server thông qua URL. Với Node.js, bạn có thể dễ dàng lấy và xử lý query parameters bằng cách sử dụng module url hoặc framework như Express.js. Dù tiện lợi, nhưng bạn cũng nên cân nhắc các vấn đề bảo mật và kích thước URL khi sử dụng.