07/09/2018, 13:40

Node.js HTTP Module

Module Tích Hợp Sẵn HTTP Node.js cung cấp sẵn một mô-đun có tên là HTTP, mô-đun này cho phép chúng ta sử dụng Node.js để truyền dữ liệu sử dụng giao thức Hyper Text Transfer Protocol (HTTP). Chúng ta sử dụng phương thức require()để tải mô-đun này: var http = require('http'); Node.js ...

Module Tích Hợp Sẵn HTTP

Node.js cung cấp sẵn một mô-đun có tên là HTTP, mô-đun này cho phép chúng ta sử dụng Node.js để truyền dữ liệu sử dụng giao thức Hyper Text Transfer Protocol (HTTP).

Chúng ta sử dụng phương thức require()để tải mô-đun này:

 var http = require('http');

Node.js Đóng Vai Trò Web Server

Module HTTP có thể sử dụng để tạo một HTTP server lắng nghe trên một cổng cho trước và trả về kết quả (response) cho client.

Sử dụng phương thức createServer() để tạo HTTP server:

var http = require('http');

 //tạo đối tượng server
 http.createServer(function (req, res) {
   res.write('Hello World!'); //viết phản hồi cho client
   res.end(); //kết thúc phản hồi 
 }).listen(8080); //đối tượng server lắng nghe ở cổng 8080

Hàm đã được truyền phương thức http.createServer(), sẽ được thực thi khi có ai đó truy cập và máy của bạn trên cổng 8080

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

 C:Usersadmin>node demo_http.js

Nếu bạn đã làm theo những bước như trên, bạn sẽ thấy kết quả hiển thị dòng chữ "Hello World!" khi mở đường dẫn: http://localhost:8080

Thêm Một HTTP Header

Nếu phản hồi từ HTTP server dùng để hiện thị dưới dạng HTML, bạn nên thêm HTTP header với dạng nội dung chính xác:

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

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

Đọc Chuỗi Truy Vấn

Hàm được truyền vào http.createServer() có một đối số req đại diện cho yêu cầu từ client như một đối tượng (http.IncomingMessage object).

Đối tượng này có một phương thức gọi là “url” chứa phần url xuất hiện sau tên miền.

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

Lưu đoạn mã trên với tên demo_http_url.js và kích hoạt tập tin với đoạn mã sau:

 C:Usersadmin>node demo_http_url.js

Nếu bạn đã làm theo các bước như trên, bạn sẽ thấy hai kết quả khác nhau khi mở 2 địa chỉ sau:

http://localhost:8080/summer

Sẽ tạo ra kết quả:

/summer

http://localhost:8080/winter

Sẽ tạo ra kết quả:

/winter

Tách Chuỗi Truy Vấn

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

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

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

Lưu mã trên với tên demo_querystring.js và kích hoạt với đoạn mã sau:

 C:Usersadmin>node demo_querystring.js

Địa chỉ:

http://localhost:8080/?year=2017&month=July

Sẽ tạo ra kết quả:

July 2017

0