Tạo HTTP server với Nodejs và cách request dữ liệu

1
635

Nodejs được sinh ra là để xây dựng ứng dụng cho máy chủ. NodeJS có những framework giúp bạn dễ dàng tạo web server có thể phục vụ nội dung cho hàng triệu người dùng. Việc tạo HTTP server với Node.js là công việc làm gần như bắt buộc với các ứng dụng Nodejs. (Đọc chi tiết Nodejs là gì ở đây)

Có một số module như “http”, “request” giúp server xử lý  các request đến server cực dễ dàng. Về cơ bản, client (trình duyệt, mobile app…) sẽ request lên nodejs server theo giao thức http. Trên server nhận request và xử lý, sau đó trả kết quả về cho client.

Bài viết này mình hướng dẫn các bạn cách tạo một webserver cơ bản sử dụng Node.js

Tạo HTTP server trong Nodejs và cách request dữ liệu

#Tạo HTTP server với Nodejs sử dụng HTTP module

Đầu tiên, các bạn hãy thử xem ví dụ Hello World rất hay gặp khi bắt đầu học NodeJs.

Ứng dụng của chúng ta là tạo một webserver đơn giản, server này sẽ lắng nghe cổng 3000. Khi trình duyệt request đến server đúng port thì server trả v ề một string là “Hello World”

// app.js
const http = require('http');

// Create an instance of the http server to handle HTTP requests
let app = http.createServer((req, res) => {  
    // Set a response type of plain text for the response
    res.writeHead(200, {'Content-Type': 'text/plain'});

    // Send back a response and end the connection
    res.end('VNTALKING - Hello World!\n');
});

// Start the server on port 3000
app.listen(3000, '127.0.0.1');  
console.log('Node server running on port 3000');  

Mình sẽ giải thích một chút về đoạn code trên:

  • Như ở bài viết trước về module trong Nodejs, để có thể sử dụng được một module, bạn chỉ đơn giản là sử dụng từ khóa require.
  • Để tạo server, chúng ta gọi hàm createServer(). Hàm này được gọi khi có một request tới server.
  • Khi một request được nhận, chúng ta sẽ trả về mã “200” cho client. Tại sao lại là 200. Đây là những mã được tiêu chuẩn hóa cho HTTP, mỗi một mã sẽ tương ứng với một thông điệp. Ví dụ: 200 tức là thành công, 400 tức bad request, 500 là internal server error… Bạn có thể tham khảo thêm tại đây.

Và đây là kết quả:

http webserver trong nodejs

#Tạo và xử lý GET request trong NodeJS

Tạo một GET request để lấy dữ liệu từ một site khác bằng Nodejs cũng rất đơn giản. Thực ra, với Node.js, cái gì cũng đơn giản 🙂

Để làm điều này, chúng ta sẽ cần cài thêm module có tên là “request”. Cách cài đặt thì đơn giản là một dòng lệnh:

npm install request

request dữ liệu trong nodejs

Sau khi cài đặt xong, bạn có thể xem lại file package.json sẽ thấy sự thay đổi. Module “request” được thêm vào  dependencies.

{
  "name": "nodejsexample",
  "version": "1.0.0",
  "description": "hello vntalking",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Duong Anh Son",
  "license": "ISC",
  "dependencies": {
    "request": "^2.88.0"
  }
}

Và đây là đoạn code để tạo request:

const request = require("request");
request("http://vntalking.com",function(error,response,body){
    console.log(body);
});

Với đoạn code trên, ứng dụng nodejs của bạn sẽ request đến trang web: vntalking.com và nhận kết quả từ callback.

Đoạn code này không phải là nhận và xử lý request từ client vào ứng dụng của bạn. Mà là tạo một request từ ứng dụng web của bạn tới một website khác.

>> Có lẽ có ích cho bạn: Callback hell là gì? 6 cách “trị” callback hell trong javascript

#Tạm kết

Như vậy mình đã kết thúc phần hướng dẫn tạo HTTP server với NodeJs. Hầu như các ứng dụng web đều tương tác với client thông qua HTTP hoặc HTTPS.

Vì vậy, việc bạn nắm vững phần kiến thức này sẽ giúp bạn tự tin hơn cho dự án sau này.

Bài viết sau, chúng ta sẽ tìm hiểu cách xây dựng website với ExpressJS, một framework nổi tiếng trong thế giới NodeJS.

Các bạn nhớ đón đọc nhé!

1
Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Mới nhất Cũ nhất Nhiều voted nhất
Thông báo
Hoang
Guest
Hoang

tks bạn nhiều