DANH MỤC: Node.js CƠ BẢN

Bài 16: Tạo Client Request trong Node.js


Trong các ngôn ngữ lập trình bậc cao, đều hỗ trợ chúng ta tạo ra các request đến server khác, đối với node.js thì chúng ta cũng có thể thực hiện được điều này bằng việc sử dụng module http, nhưng trong phạm vi bài này mình sẽ giới thiệu với mọi người sử dụng module request trên npm của tác giả mikeal.

1, Cài đặt module request.

Như mình đã nói ở phía trên, thì do module request là một module do lập trình viên phát triển dựa trên module http của Node.js nên để sử dụng được nó thì chúng ta cần phải cài đặt. Cú pháp cài đặt như sau:

npm install request

Sau khi cài đặt xong thì bạn cần phải require nó vào dự án của mình theo cú pháp thông thường (như những bài trước)

let request = require('request');

2, Sử dụng.

Để gửi một request thông thường trong module request thì bạn chỉ việc sử dụng cú pháp sau:

request(url, function (err, res, body));

Trong đó:

  • request là biến mà bạn ánh xạ module request.
  • err là biến dùng để chứa lỗi nếu có.
  • res là biến dùng để chứa thông tin server trả về.
  • body là biến dùng để chứa body mà server trả về. 

VD:  Mình sẽ gửi một request đến site toidicode.com từ local và in ra các tham số nếu có!

let request = require('request');

request('https://toidicode.com', function (err, res, body) {
    //nếu có lỗi
    if (err)
        throw err;
    //in ra header
    console.log(res);
    //in ra body nhận được
    console.log(body);
})

Nếu như bạn muốn sử dụng RESful API  thì module request cũng hỗ trợ bạn một cách đơn giản. Bạn chỉ cần trỏ đến các phương thức mà bạn muốn sử dụng với các phương thức mà module request hỗ trợ chúng ta như sau:

Method Mô Tả
request.get() Gửi request với phương thức GET.
request.post() Gửi request với phương thức POST.
request.put() Gửi request với phương thức PUT.
request.patch() Gửi request với phương thức PATCH.
request.del() Gửi request với phương thức DELETE.
request.head() Gửi request với phương thức HEAD.
request.options() Gửi request với phương thức OPTIONS.

VD: Mình sẽ gửi một post request đến site toidicode.com.

let request = require('request');

request.post('https://toidicode.com', function (err, res, body) {
    //nếu có lỗi
    if (err)
        throw err;
    //in ra header
    console.log(res);
    //in ra body nhận được
    console.log(body);
})

Ngoài ra thì bạn cũng có thể cấu hình các thông số cho request gửi đi theo cú pháp:

request(options, function (err, res, body) {
    //code
});

Trong đó: options là object chứa các thông số cho request mà bạn muốn gửi. Các thông số này bao gồm các tham số như sau:

  • uri - url của request muốn gửi.
  • method - phương thức gửi request.
  • timeout - thời gian timeout tối đa (đơn vị mili giây).
  • followRedirect  - cấu hình xem có cho phép redirect không.
  • maxRedirect -  số lượng redirect tối đa cho request.
  • multipart - cấu hình file upload lên nếu có.
  • form - object cấu hình các dữ liệu form gửi đi kèm.
  • ... xem thêm

VD:

let request = require('request');

request({
    uri: 'https://toidicode.com',
    method: 'GET',
    timeout: 10000 //equal 10s
}, function(err, res, body) {
    //nếu có lỗi
    if (err)
        throw err;
    //in ra header
    console.log(res);
    //in ra body nhận được
    console.log(body);
})

Và bạn cũng có thể sử dụng để pass qua HTTP authentication với cú pháp sau:

request.get('http://address.com/').auth('username', 'password', false);
// hoặc
request.get('http://address.com/', {
  'auth': {
    'user': 'username',
    'pass': 'password',
    'sendImmediately': false
  }
});
// hoặc
request.get('http://address.com/').auth(null, null, true, 'bearerToken');
// hoặc
request.get('http://address.com/', {
  'auth': {
    'bearer': 'bearerToken'
  }
});

Không những để bạn còn có thể sử dụng cookie được luôn.

VD:

let request = require('request');

let jar = request.jar();

let cookie = request.cookie("name=Vu Thanh Tai");

let url = 'http://www.cjihrig.com/development/php/hello_cookies.php';

jar.setCookie(cookie, url);
request({
    uri: url,
    method: "GET",
    jar: jar,
}, function(error, response, body) {
    console.log(body);
});

Và bạn cũng có thể nhập dữ liệu vào một file hoặc xuất dữ liệu trong file lên server.

VD: Mình sẽ nhập cookie nhận được từ server vào file cookie.txt.

let fs = require('fs');
let request = require('request');
let jar = request.jar();
let cookie = request.cookie("name=Vu Thanh Tai");
let url = 'http://www.cjihrig.com/development/php/hello_cookies.php';

jar.setCookie(cookie, url);
request({
    uri: url,
    method: "GET",
    jar: jar,
}).pipe(fs.createWriteStream('cookie.txt'));

3, Lời kết.

Phía trên chỉ là những gì cơ về module request thôi, còn thực sự nếu như bạn nào muốn tìm hiểu chi tiết và nâng cao hơn thì có thể tham khảo tại đây.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

Biển học vô biên, quay đầu là dại!

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia