Node.js: API RESTful


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Kiến trúc REST là gì?

REST là viết tắt của REpresentational State Transfer. REST là kiến ​​trúc dựa trên tiêu chuẩn web và sử dụng Giao thức HTTP. Nó xoay quanh tài nguyên trong đó mọi thành phần đều là tài nguyên và tài nguyên được truy cập bằng một giao diện chung sử dụng các phương thức chuẩn HTTP. REST lần đầu tiên được giới thiệu bởi Roy Fielding vào năm 2000.

Máy chủ REST chỉ đơn giản là cung cấp quyền truy cập vào tài nguyên và máy khách REST truy cập và sửa đổi tài nguyên bằng giao thức HTTP. Ở đây, mỗi tài nguyên được xác định bằng các URI/ID toàn cầu (global). REST sử dụng nhiều cách biểu diễn khác nhau để biểu diễn một tài nguyên như văn bản, JSON, XML nhưng JSON là tài nguyên phổ biến nhất.

Phương thức HTTP

Bốn phương thức HTTP sau đây thường được sử dụng trong kiến ​​trúc dựa trên REST.

  • GET: Được sử dụng để cung cấp quyền truy cập chỉ đọc vào một tài nguyên.
  • PUT: Được sử dụng để tạo một tài nguyên mới.
  • DELETE: Được sử dụng để xóa một tài nguyên.
  • POST: Được sử dụng để cập nhật tài nguyên hiện có hoặc tạo tài nguyên mới.

RESTful Web Services

Dịch vụ web là một tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc hệ thống. Các ứng dụng phần mềm được viết bằng nhiều ngôn ngữ lập trình khác nhau và chạy trên nhiều nền tảng khác nhau có thể sử dụng các dịch vụ web để trao đổi dữ liệu qua các mạng máy tính như Internet theo cách tương tự như giao tiếp giữa các quá trình trên một máy tính. Khả năng tương tác này (ví dụ: giao tiếp giữa JavaPython, hoặc các ứng dụng Windows và Linux) là do việc sử dụng các tiêu chuẩn mở.

Các dịch vụ web dựa trên Kiến trúc REST được gọi là các dịch vụ web RESTful. Các dịch vụ web này sử dụng các phương thức HTTP để triển khai khái niệm kiến ​​trúc REST. Một dịch vụ web RESTful thường xác định một URI, Định danh tài nguyên đồng nhất, một dịch vụ cung cấp biểu diễn tài nguyên như JSON và tập hợp các phương thức HTTP.

Tạo RESTful cho Thư viện

Dưới đây ta có cơ sở dữ liệu dựa trên JSON của những người dùng có những người dùng sau trong tệp users.json:

{
  "user1": {
    "name": "Lan",
    "password": "password1",
    "profession": "teacher",
    "id": 1
  },
  "user2": {
    "name": "Long",
    "password": "password2",
    "profession": "librarian",
    "id": 2
  },
  "user3": {
    "name": "Minh",
    "password": "password3",
    "profession": "clerk",
    "id": 3
  }
}

Dựa trên thông tin này, ta sẽ cung cấp các API RESTful sau:

Sr.No. URI Phương thức HTTP POST body Kết quả
1 listUsers GET empty Hiển thị danh sách tất cả người dùng.
2 addUser POST Chuỗi JSON Thêm thông tin chi tiết của người dùng mới.
3 deleteUser DELETE Chuỗi JSON Xóa người dùng hiện có.
4 :id GET empty Hiển thị thông tin chi tiết của một người dùng.

Ta đang giữ hầu hết các phần của tất cả các ví dụ ở dạng mã hóa cứng, giả sử bạn đã biết cách chuyển các giá trị từ giao diện người dùng bằng cách sử dụng Ajax hoặc dữ liệu biểu mẫu đơn giản và cách xử lý chúng bằng đối tượng express Request.

Danh sách người dùng

Trước tiên ta sẽ triển khai danh sách người dùng API RESTful đầu tiên của ta bằng cách sử dụng mã sau trong tệp demo_restful_listusers.js:

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      console.log( data );
      res.end( data );
   });
})

app.listen(8080)

Thực thi Node.js:

C:\Users\LongDT\nodejs>node demo_restful_listusers.js

Truy cập web để xem kết quả: http://localhost:8080/listUsers

Kết quả:

 

Thêm người dùng

API sau đây sẽ chỉ cho bạn cách thêm người dùng mới vào danh sách. Sau đây là chi tiết về người dùng mới:

user = {
   "user4" : {
      "name" : "V1Study",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

Bạn có thể chấp nhận cùng một đầu vào dưới dạng JSON bằng cách sử dụng lệnh gọi Ajax nhưng đối với quan điểm giảng dạy, chúng tôi đang làm cho nó được mã hóa cứng ở đây. Sau đây là API addUser cho người dùng mới trong cơ sở dữ liệu với file Node.js là demo_restful_adduser.js:

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
   "user4" : {
      "name" : "V1Study",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

app.get('/addUser', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      data = JSON.parse(data);
      data["user4"] = user["user4"];
      console.log(data);
      res.end(JSON.stringify(data));
   });
})

app.listen(8080)

Thực thi Node.js:

C:\Users\LongDT\nodejs>node demo_restful_adduser.js

Truy cập web để xem kết quả: http://localhost:8080/addUser

Kết quả:

Hiển thị chi tiết

Bây giờ ta sẽ triển khai một API sẽ được gọi bằng cách sử dụng ID người dùng và nó sẽ hiển thị thông tin chi tiết của người dùng tương ứng.

Ta tạo một file Node demo_restful_showuser.js và đưa vào nội dung sau:

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
   fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["user" + req.params.id] 
      console.log(user);
      res.end(JSON.stringify(user));
   });
})

app.listen(8080)

Thực thi Node.js:

C:\Users\LongDT\nodejs>node demo_restful_showuser.js

Truy cập web để xem kết quả: http://localhost:8080/2

Kết quả:

Xóa người dùng

API này rất giống với API addUser, trong đó ta nhận dữ liệu đầu vào thông qua req.body và sau đó dựa trên ID người dùng, ta sẽ xóa người dùng đó khỏi cơ sở dữ liệu. Để giữ cho chương trình của ta đơn giản thì giả định rằng ta sẽ xóa người dùng có ID 2.

Tạo file Node demo_restful_deleteuser.js và đưa nào nội dung sau:

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.delete('/deleteUser', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      data = JSON.parse(data);
      delete data["user" + id];
       
      console.log(data);
      res.end(JSON.stringify(data));
   });
})

app.listen(8080)

Thực thi Node.js:

C:\Users\LongDT\nodejs>node demo_restful_deleteuser.js

Thực thi web để xem kết quả: http://localhost:8080/deleteUser

Kết quả:

{"user1":{"name":"Lan","password":"password1","profession":"teacher","id":1},
"user3":{"name":"Minh","password":"password3","profession":"clerk","id":3}}
» Tiếp: Bắt đầu
« Trước: Framework Express
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!