Thứ ba, 28/05/2019 | 00:00 GMT+7

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ỳ requestresponse để 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

Kiểm tra các phương thức .status().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' :

index.js
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 reqres 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ố:

index.js
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().send() :

index.js
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() :

index.js
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().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 :

index.js
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' :

index.js
 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() :

index.js
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' :

index.js
 // 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ố:

index.js
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 .


Tags:

Các tin liên quan