Cách sử dụng đối tượng res trong Express
Giới thiệu
Trong bài viết này, bạn sẽ tìm hiểu về đối tượng res
trong Express. Viết tắt của response
, đối tượng res
là một nửa của chu kỳ request
và response
để gửi dữ liệu từ server đến phía client thông qua các yêu cầu HTTP.
Yêu cầu
Hiểu biết về Node.js là hữu ích nhưng không bắt buộc. Để tìm hiểu thêm về Node.js, hãy xem loạt bài Cách viết mã trong Node.js của ta .
Kiến thức chung về các yêu cầu HTTP. Để tìm hiểu thêm về Yêu cầu HTTP, hãy xem hướng dẫn của ta về Cách xác định tuyến và phương thức yêu cầu HTTP trong Express .
Kiểm tra các phương thức .status()
và .append()
Phương thức .send()
trên đối tượng res
sẽ chuyển tiếp bất kỳ dữ liệu nào được truyền dưới dạng đối số cho phía client . Phương thức có thể lấy một chuỗi, mảng và một đối tượng làm đối số.
Trong index.js
của bạn, thực hiện yêu cầu GET
với tuyến đường '/home'
:
app.get('/home', (req, res) => {
res.send('Hello World!'))
});
Lưu ý yêu cầu GET
nhận đối số gọi lại với req
và res
làm đối số. Bạn có thể sử dụng đối tượng res
trong yêu cầu GET
để gửi chuỗi Hello World!
về phía khách hàng.
Phương thức .send()
cũng tự định nghĩa các tiêu đề tích hợp của riêng nó, tùy thuộc vào Content-Type
Content-Length
của dữ liệu.
Đối tượng res
cũng có thể chỉ định mã trạng thái HTTP bằng phương thức .status()
. Trong index.js
của bạn, hãy tích hợp phương thức .status()
trên đối tượng res
và chuyển vào mã trạng thái HTTP làm đối số:
res.status(404).send('Not Found');
Phương thức .status()
trên đối tượng res
sẽ đặt mã trạng thái HTTP là 404
. Để gửi mã trạng thái đến phía client , bạn có thể phương thức chuỗi bằng phương thức .send()
. Mã trạng thái 404
cho phía client biết rằng không tìm thấy dữ liệu được yêu cầu.
Phương thức .sendStatus()
là một cú pháp viết tắt để điều chỉnh chức năng của cả phương thức .status()
và .send()
:
res.sendStatus(404);
Tại đây, phương thức .sendStatus()
sẽ đặt mã trạng thái HTTP 404
và gửi nó đến phía client trong một lần gọi.
Mã trạng thái HTTP tóm tắt phản hồi của server Express của bạn. Trình duyệt dựa vào mã trạng thái HTTP để thông báo cho phía client liệu dữ liệu được chỉ định có tồn tại hay không hoặc nếu xảy ra lỗi server nội bộ.
Để xác định tiêu đề trong phản hồi server của bạn, hãy áp dụng phương thức .append()
. Trong index.js
của bạn, hãy chuyển vào một tiêu đề làm đối số đầu tiên và một giá trị làm đối số thứ hai trong lệnh gọi của bạn tới .append()
:
res.append('Content-Type', 'application/javascript; charset=UTF-8');
res.append('Connection', 'keep-alive')
res.append('Set-Cookie', 'divehours=fornightly')
res.append('Content-Length', '5089990');
Trong một dòng mã, phương thức .append()
chấp nhận các tiêu đề chuẩn và không chuẩn trong phản hồi server của bạn.
Phân tích các phương thức .redirect()
, .render()
và .end()
Phương thức redirect()
trên đối tượng res
sẽ hướng phía client đến một trang khác. Nếu user nhập thông tin đăng nhập của họ ở phía client , phương thức .redirect()
sẽ tạo điều kiện thuận lợi cho việc chuyển sang trang truy cập của họ.
Trong index.js
của bạn, hãy đặt một phương thức .redirect()
trên đối tượng res
:
res.redirect('/sharks/shark-facts')
Ở đây, phương thức .redirect()
sẽ chuyển tiếp phía client đến tuyến đường '/sharks/shark-facts'
.
Phương thức .render()
chấp nhận file HTML làm đối số và gửi file đó đến phía client . Phương thức này cũng chấp nhận đối số thứ hai tùy chọn, một đối tượng local, với các thuộc tính tùy chỉnh để xác định file được gửi đến phía client .
Trong index.js
của bạn, thực hiện yêu cầu GET
với tuyến đường '/shark-game'
:
app.get('/shark-game', (req, res) => {
res.render('shark.html', {status: 'good'});
});
Sử dụng phương thức .render()
trên đối tượng res
sẽ gửi file HTML shark.html
và đối tượng local có thuộc tính status
đến phía client .
Phương thức .end()
sẽ kết thúc chu kỳ phản hồi. Bạn nên sử dụng phương thức .end()
làm lệnh gọi cuối cùng trong phản hồi của bạn với phía client .
Trong index.js
của bạn, hãy đặt một phương thức .sentStatus()
kết với .end()
:
res.sendStatus(404).end();
Phương thức .end()
sẽ hoàn tất phản hồi sau khi mã trạng thái HTTP 404
đặt và gửi nó đến phía client .
Đối tượng req
không chỉ tạo điều kiện cho việc truyền dữ liệu mà còn với các file . Hãy xem xét các phương pháp khác mà đối tượng req
chứa để quản lý file .
Xử lý file với đối tượng res
Để gửi các file HTML, CSS và JavaScript đến phía client , hãy sử dụng phương thức .sendFile()
trên đối tượng res
. Trong index.js
của bạn, hãy đặt yêu cầu GET
cho tuyến đường '/gallery/:fileName'
:
// GET https://sharks.com/gallery/shark-image.jpg
app.get('/gallery/:fileName', function (req, res, next) {
var options = {
root: path.join(__dirname, 'public')
};
res.sendFile(req.params.fileName, options, function (err) {
if (err) next(err);
else console.log('Sent:', fileName);
});
});
Trong yêu cầu GET
, các options
biến nhận một đối tượng và folder public
làm giá trị trong lời gọi tới path.join()
để phục vụ như một đường dẫn tuyệt đối. Nội dung trong folder public
bao gồm các file HTML, CSS và JavaScript. Phương thức gọi .sendFile
nhận biến options
làm đối số thứ hai và đặt trình xử lý lỗi làm đối số thứ ba. Thao tác này sẽ gửi các file được lưu trữ trong folder public
đến phía client .
Bạn cũng có thể hỗ trợ xử lý file bằng phương thức .download()
trên đối tượng res
. Trong index.js
của bạn, hãy triển khai yêu cầu GET
tới tuyến đường '/gallery/:fileName'
:
// GET https://sharkss.com/gallery/shark-image.jpg
app.get('/gallery/:fileName', function(req, res){
const file = `${__dirname}/public/${req.params.fileName}`;
res.download(file);
});
Phương thức .download()
gửi và nhắc phía client download file và đặt tiêu đề thích hợp cho loại file trong một lần gọi.
Để phác thảo giá trị của Content-Header
trên một loại file , hãy sử dụng phương thức .type()
trên đối tượng res
. Trong index.js
của bạn, hãy đặt một phương thức .type()
trên đối tượng res
và chuyển một loại file làm đối số:
res.type('png') // => 'image/png'
res.type('html') // => 'text/html'
res.type('application/json') // =>'application/json'
Phương thức .type()
sẽ xuất ra loại file với các giá trị được liên kết của chúng trong Content-Header
.
Kết luận
Đối tượng res
giữ các phương thức để tạo điều kiện thuận lợi cho việc truyền dữ liệu và file như là một phần của chu kỳ response
của bạn từ server Express sang phía client . Để có thông tin toàn diện về đối tượng res
, hãy truy cập trang web tài liệu chính thức của Express.js .
Các tin liên quan