Nếu bạn đang làm việc với API, bạn có thể cần thực hiện một yêu cầu PUT trong Node.js. Yêu cầu PUT là một cách để cập nhật hoặc sửa đổi một tài nguyên hiện có trên máy chủ. Ví dụ, bạn có thể muốn thay đổi tên hoặc email của một người dùng trong cơ sở dữ liệu. Trong bài viết blog này, tôi sẽ cho bạn biết cách thực hiện yêu cầu PUT trong Node.js bằng nhiều phương pháp và công cụ khác nhau như Apidog.
Vào cuối bài viết blog này, bạn sẽ có thể thực hiện yêu cầu PUT trong Node.js với sự tự tin và dễ dàng. Bắt đầu nào!
Yêu cầu PUT là gì và khi nào sử dụng nó
Yêu cầu PUT là một trong bốn yêu cầu HTTP phổ biến, cùng với GET, POST và DELETE. Yêu cầu PUT được sử dụng để cập nhật hoặc thay thế một tài nguyên hiện có trên máy chủ. Ví dụ, nếu bạn có một người dùng với id là 1 và tên là Alice, và bạn muốn thay đổi tên của cô ấy thành Bob, bạn có thể thực hiện một yêu cầu PUT đến máy chủ với tên mới.
Yêu cầu PUT có hai thành phần chính: một URL và một body. URL là địa chỉ của tài nguyên mà bạn muốn cập nhật, và body là dữ liệu mà bạn muốn gửi đến máy chủ. Ví dụ, nếu bạn muốn cập nhật người dùng có id là 1, URL của bạn có thể trông như thế này:
https://example.com/api/users/1
Và body của bạn có thể trông như thế này:
{ "name": "Bob" }
Body có thể ở nhiều định dạng khác nhau, chẳng hạn như JSON, XML hoặc dữ liệu form. Trong bài viết blog này, chúng tôi sẽ sử dụng JSON làm định dạng cho body.
Để thực hiện yêu cầu PUT, bạn cần chỉ định phương thức, URL và body trong mã của bạn. Bạn cũng cần thiết lập một số header, chẳng hạn như content-type và authorization. Header content-type cho máy chủ biết định dạng của body, và header authorization cung cấp thông tin xác thực của bạn để truy cập tài nguyên. Ví dụ, nếu bạn đang sử dụng JSON làm định dạng cho body, và bạn cần một token để truy cập tài nguyên, các header của bạn có thể trông như thế này:
{ "Content-Type": "application/json", "Authorization": "Bearer <your-token>" }
Trong các phần tiếp theo, chúng tôi sẽ xem cách thực hiện yêu cầu PUT trong Node.js bằng nhiều phương pháp và thư viện khác nhau.
Hiểu về NodeJs
Node.js là một môi trường thực thi JavaScript cho phép bạn chạy mã JavaScript bên ngoài trình duyệt web. Node.js dựa trên động cơ JavaScript V8 của Google Chrome, và được sử dụng để xây dựng các ứng dụng web, đặc biệt là những ứng dụng có dữ liệu lớn và thời gian thực. Node.js cũng có một thư viện lớn các mô-đun và gói mà bạn có thể sử dụng để thêm chức năng cho các dự án của mình. Một số lợi ích của Node.js bao gồm:
- Nó nhanh và có khả năng mở rộng, nhờ vào tính bất đồng bộ và hướng sự kiện của nó.
- Nó đa nền tảng và mã nguồn mở, có nghĩa là bạn có thể chạy nó trên nhiều hệ điều hành khác nhau và đóng góp vào sự phát triển của nó.
- Nó nhất quán và đồng nhất, vì bạn có thể sử dụng cùng một ngôn ngữ cho cả phía front-end và back-end của ứng dụng web của bạn.

Cách thực hiện yêu cầu PUT bằng mô-đun Http gốc
Một cách để thực hiện yêu cầu PUT trong Node.js là sử dụng mô-đun http gốc. Mô-đun http là một mô-đun lõi cung cấp chức năng cấp thấp để thực hiện các yêu cầu và phản hồi HTTP. Để sử dụng mô-đun http, bạn cần yêu cầu nó trong mã của bạn:
const http = require('http');
Để thực hiện yêu cầu PUT bằng mô-đun http, bạn cần sử dụng phương thức http.request(). Phương thức http.request() nhận hai đối số: một đối tượng options và một hàm callback. Đối tượng options chứa các chi tiết của yêu cầu, chẳng hạn như phương thức, URL, các header và body. Hàm callback được thực hiện khi yêu cầu hoàn tất, và nó nhận một đối tượng phản hồi làm đối số. Đối tượng phản hồi chứa mã trạng thái, các header và dữ liệu từ máy chủ.
Ví dụ, nếu bạn muốn thực hiện yêu cầu PUT để cập nhật người dùng có id là 1, mã của bạn có thể trông như thế này:
const http = require('http');
// Định nghĩa đối tượng options
const options = {
method: 'PUT',
hostname: 'example.com',
path: '/api/users/1',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-token>'
}
};
// Định nghĩa body
const body = JSON.stringify({ name: 'Bob' });
// Tạo yêu cầu
const req = http.request(options, (res) => {
// Xử lý phản hồi
console.log(`Mã trạng thái: ${res.statusCode}`);
console.log(`Các header: ${JSON.stringify(res.headers)}`);
let data = '';
res.on('data', (chunk) => {
// Nối các khối dữ liệu lại
data += chunk;
});
res.on('end', () => {
// Phân tích dữ liệu dưới dạng JSON
data = JSON.parse(data);
console.log(`Dữ liệu: ${JSON.stringify(data)}`);
});
});
// Xử lý lỗi
req.on('error', (err) => {
console.error(`Lỗi: ${err.message}`);
});
// Ghi body vào yêu cầu
req.write(body);
// Kết thúc yêu cầu
req.end();
Phương thức http.request() trả về một đối tượng yêu cầu, mà bạn có thể sử dụng để ghi body vào yêu cầu và kết thúc yêu cầu. Bạn cũng có thể sử dụng đối tượng yêu cầu để xử lý bất kỳ lỗi nào có thể xảy ra trong quá trình yêu cầu.
Đối tượng phản hồi là một thể hiện của lớp http.IncomingMessage, mà là một luồng có thể đọc. Điều này có nghĩa là bạn có thể sử dụng phương thức on() để lắng nghe các sự kiện khác nhau, chẳng hạn như dữ liệu và kết thúc. Sự kiện dữ liệu được phát ra khi một khối dữ liệu được nhận, và sự kiện kết thúc được phát ra khi phản hồi hoàn tất. Bạn có thể sử dụng các sự kiện này để nối các khối dữ liệu lại và phân tích chúng dưới dạng JSON.
Đối tượng phản hồi cũng có một số thuộc tính, chẳng hạn như statusCode và headers, mà bạn có thể sử dụng để lấy mã trạng thái và các header từ máy chủ.
Cách thực hiện yêu cầu PUT bằng thư viện Request phổ biến
Một cách khác để thực hiện yêu cầu PUT trong Node.js là sử dụng thư viện request phổ biến. Thư viện request là một mô-đun bên thứ ba cung cấp một cách đơn giản và tiện lợi để thực hiện các yêu cầu HTTP. Để sử dụng thư viện request, bạn cần cài đặt nó bằng npm:
npm install request
Và sau đó yêu cầu nó trong mã của bạn:
const request = require('request');
Để thực hiện yêu cầu PUT bằng thư viện request, bạn cần sử dụng phương thức request.put(). Phương thức request.put() nhận hai đối số: một URL và một hàm callback. URL có thể là một chuỗi hoặc một đối tượng chứa các chi tiết của yêu cầu, chẳng hạn như phương thức, các header và body. Hàm callback được thực hiện khi yêu cầu hoàn tất, và nó nhận ba đối số: một lỗi, một phản hồi và một body. Đối số lỗi là null nếu yêu cầu thành công, và chứa một đối tượng lỗi nếu yêu cầu thất bại. Đối số phản hồi là một đối tượng chứa mã trạng thái, các header và dữ liệu từ máy chủ. Đối số body là một chuỗi hoặc một buffer chứa dữ liệu từ máy chủ.
Cách xử lý lỗi và phản hồi từ máy chủ
Khi bạn thực hiện yêu cầu PUT trong Node.js, bạn cần chuẩn bị để xử lý bất kỳ lỗi và phản hồi nào có thể đến từ máy chủ. Lỗi có thể xảy ra do nhiều lý do khác nhau, chẳng hạn như sự cố mạng, sự cố máy chủ, hoặc dữ liệu không hợp lệ. Các phản hồi có thể khác nhau tùy thuộc vào mã trạng thái, các header và dữ liệu từ máy chủ.
Để xử lý lỗi, bạn cần sử dụng đối số lỗi hoặc phương thức catch(), tùy thuộc vào phương thức hoặc thư viện bạn đang sử dụng. Đối số lỗi hoặc phương thức catch() sẽ nhận một đối tượng lỗi, mà bạn có thể sử dụng để lấy thông điệp, mã và thông tin yêu cầu. Bạn cũng có thể sử dụng phương thức console.error() để ghi lỗi vào console.
Để xử lý các phản hồi, bạn cần sử dụng đối số phản hồi hoặc phương thức then(), tùy thuộc vào phương thức hoặc thư viện bạn đang sử dụng. Đối số phản hồi hoặc phương thức then() sẽ nhận một đối tượng phản hồi, mà bạn có thể sử dụng để lấy mã trạng thái, các header và dữ liệu từ máy chủ. Bạn cũng có thể sử dụng phương thức console.log() để ghi phản hồi vào console.
Mã trạng thái là một số ba chữ số cho biết kết quả của yêu cầu. Mã trạng thái có thể được chia thành năm loại:
- 1xx: Phản hồi thông tin
- 2xx: Phản hồi thành công
- 3xx: Phản hồi chuyển hướng
- 4xx: Phản hồi lỗi của người dùng
- 5xx: Phản hồi lỗi của máy chủ
Mã trạng thái phổ biến nhất cho yêu cầu PUT là 200, có nghĩa là OK. Điều này có nghĩa là yêu cầu đã thành công và tài nguyên đã được cập nhật. Tuy nhiên, tùy thuộc vào cách máy chủ được triển khai, bạn cũng có thể nhận được các mã trạng thái khác, chẳng hạn như 201, có nghĩa là Created, hoặc 204, có nghĩa là No Content. Bạn nên luôn kiểm tra mã trạng thái trước khi xử lý dữ liệu phản hồi.
Các header là một tập hợp các cặp khóa-giá trị cung cấp thông tin bổ sung về yêu cầu và phản hồi. Các header có thể chứa thông tin như content-type, content-length, ngày tháng, máy chủ và authorization. Bạn nên luôn kiểm tra các header trước khi xử lý dữ liệu phản hồi, vì chúng có thể ảnh hưởng đến cách bạn phân tích hoặc hiển thị dữ liệu.
Dữ liệu là nội dung thực tế của phản hồi, có thể ở nhiều định dạng khác nhau, chẳng hạn như JSON, XML hoặc văn bản thuần. Dữ liệu có thể chứa thông tin như tài nguyên đã cập nhật, thông điệp hoặc lỗi. Bạn nên luôn phân tích dữ liệu theo định dạng được chỉ định bởi header content-type, và xử lý bất kỳ lỗi hoặc thông điệp nào có thể được bao gồm trong dữ liệu.
Cách kiểm tra yêu cầu PUT của bạn bằng một công cụ gọi là Apidog
Một cách để kiểm tra yêu cầu PUT của bạn trong Node.js là sử dụng một công cụ gọi là Apidog. Apidog là một công cụ dựa trên web cho phép bạn tạo và kiểm tra các API một cách đơn giản và tương tác. Bạn có thể sử dụng Apidog để tạo các máy chủ giả, định nghĩa các điểm cuối, gửi yêu cầu và xem phản hồi. Bạn cũng có thể sử dụng Apidog để tạo tài liệu và mã mẫu cho các API của bạn.
Dưới đây là cách bạn có thể sử dụng Apidog để kiểm tra yêu cầu PUT của mình:
- Mở Apidog và tạo một yêu cầu mới.

2. Đặt phương thức yêu cầu thành PUT.

3. Nhập URL của tài nguyên bạn muốn cập nhật. Thêm bất kỳ header hoặc tham số nào bạn muốn bao gồm sau đó nhấn nút “Gửi” để gửi yêu cầu.

4. Kiểm tra xem phản hồi có như bạn mong đợi không.

Kết luận
Trong bài viết blog này, bạn đã học cách thực hiện yêu cầu PUT trong Node.js bằng nhiều phương pháp và thư viện khác nhau. Bạn cũng đã học cách xử lý lỗi và phản hồi từ máy chủ, và cách kiểm tra yêu cầu PUT của bạn bằng công cụ gọi là Apidog. Bạn có thể sử dụng những kỹ năng này để cập nhật hoặc sửa đổi bất kỳ tài nguyên nào trên máy chủ bằng Node.js.