[Node.js] Phần 4: Module HTTP Node.js

285 lượt xem

Bài trước chúng ta đã làm quen 1 module gọi là HTTP, bài này chúng ta sẽ tìm hiểu kỹ hơn về module này.

Module tích hợp sẵn HTTP
Module HTTP cho phép Node.js chuyển dữ liệu trên giao thức Hyper Text Transfer Protocol (HTTP, cổng 80). Để nhúng module này, chúng ta phải dùng phương thức require():

var http = require('http');

Node.js đóng vai trò là Web Server
Module HTPP có thể tạo 1 server HTTP có thể “lắng nghe” các cổng server và trả về phản hồi ngược lại máy khách (client). Để tạo 1 server HTTP, chúng ta dùng phương thức createServer().

var http = require('http');

//tạo 1 đối tượng server --- dammio.com
http.createServer(function (req, res) {
  res.write('Hello Dammio!'); //viết 1 phản hồi tới máy khách
  res.end(); //kết thúc phản hồi
}).listen(8080); //đối tượng server lắng nghe cổng 8080

Một hàm sẽ chuyển vào phương thức http.createServer(), sẽ được thực thi khi ai đó truy cập máy tính trên cổng 8080. Bạn hãy lưu đoạn mã trên vào tập tin gọi là demo_dammio_http.js, và kích hoạt tập tin này bằng câu lệnh.

C:\Users\Your Name>node demo_dammio_http.js

Tương tự bài trước, mở trình duyệt chạy đường dẫn http://localhost:8080, bạn cũng thấy kết quả hiển thị dòng chữ “Hello Dammio!” trên trình duyệt.

Thêm 1 HTTP Header (phần đầu HTTP)
Nếu phản hồi từ server HTTP dùng để hiển thị dưới dạng HTML, bạn nên thêm 1 HTTP Header với dạng nội dung chính xác. Điều này giúp trình duyệt hiểu nội dung cần hiển thị là dạng text/html, từ đó điều chỉnh để hiển thị kết quả cho đúng.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('Hello Dammio!');
  res.end();
}).listen(8080);

Đối số đầu tiên của phương thức res.writeHead() là mã trạng thái (status code), 200 nghĩa là trạng thái OK, đối số thứ hai là 1 đối tượng chứa các phần đầu phản hồi.

Đọc chuỗi truy vấn
Một hàm chuyển vào trong phương thức http.createServer() chứa đối số req, thể hiện 1 yêu cầu từ máy khách, dưới dạng đối tượng. (đối tượng http.IncomingMessage)

Đối tượng này chứa 1 thuộc tính gọi “url“, giữ phần url ở sau tên domain. Ví dụ chúng ta có nội dung tập tin demo_dammio_http_url.js như sau:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(req.url); // reg.url là phần chứa url ở sau tên domain
    res.end();
}).listen(8080);

Lưu đoạn mã trên vào tập tin gọi là demo_dammio_http_url.js, và kích hoạt tập tin này bằng câu lệnh cmd như sau.

C:\Users\Your Name>node demo_http_url.js

Bạn mở trình duyệt chạy đường dẫn http://localhost:8080/dammio thì sẽ được kết quả là “dammio“.

Tách chuỗi truy vấn
Có nhiều module tích hợp sẵn để dễ dàng tách chuỗi truy vấn thành các phần đọc được, chẳng hạn như module URL. Ví dụ sau tách chuỗi truy vấn thành các phần đọc được.

var http = require('http');
var url = require('url'); // module URL dùng để tách chuỗi truy vấn --- dammio.com

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query; // chuyển truy vấn thành đối tượng q chứa các thuộc tính truy vấn và giá trị của chúng
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

Lưu đoạn mã trên vào tập tin gọi là “demo_dammio_querystring.js” và kích hoạt tập tin bằng lệnh cmd.

C:\Users\Your Name>node demo_querystring.js

Tiếp theo bạn hãy mở trình duyệt là chạy đường dẫn sau: http://localhost:8080/?year=2018&month=August, bạn sẽ thấy nội dung hiển thị là “2018 August“.

Kết luận: Bài viết đã hướng dẫn bạn cách dùng module HTTP và URL, 2 trong những module quan trọng mà bạn cần nắm vững khi triển khai ứng dụng với Node.js

Bình luận Facebook

Để lại bình luận

Be the First to Comment!

Notify of
avatar
1000
wpDiscuz