http://vietjack.com/nodejs/index.jsp Copyright © vietjack.com RESTful API Node.js Kiến trúc REST ? REST viết tắt Representational State Tranfer REST chuẩn web dựa vào kiến trúc sử dụng giao thức HTTP Nó xử lí tài nguyên, nơi mà thành phần tài nguyên nguồn tài nguyên truy cập qua giao diện chung sử dụng phương thức HTTP chuẩn REST lần giới thiệu Roy Fielding năm 2000 Về bản, REST Server cung cấp chế độ truy cập đến nguồn tài nguyên REST Client truy cập sửa đổi nguồn tài nguyên sử dụng phương thức HTTP Ở nguồn tài nguyên xác định URI REST sử dụng cách biểu diễn khác để biểu diễn nguồn tài nguyên text, JSON, XML phổ biến JSON Phương thức HTTP sử dụng REST Dưới phương thức HTTP sử dụng rộng rãi kiến trúc REST • GET - Được sử dụng để đọc nguồn tài nguyên • PUT - Được sử đụng để tạo nguồn tài ngun • DELETE - Được sử dụng để xóa nguồn tài nguyên • POST - Được sử dụng để cập nhật ghi tạo nguồn tài nguyên RESTful Web Service Một web service tập hợp giao thức chuẩn sử dụng cho mục đích trao đối ứng dụng hệ thống Các ứng dụng phần mềm viết ngôn ngữ khác chạy tảng khác sử dụng web service để trao đổi liệu qua mạng máy tính internet theo cách tương tự trao đổi máy tính Web service dựa kiến trúc REST biết RESTful webservice Những webservice sử dụng phương thức HTTP để triển khai định nghĩa kiến trúc REST Một RESTful web service thường định nghĩa URI (kiểu đường dẫn), Uniform Resource Identifier service (dịch vụ) http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/nodejs/index.jsp Copyright © vietjack.com Tạo RESTful cho thư viện Giả sử có sở liệu dựa JSON chứa thông tin User, tên file làusers.json: { "user1" : { "name" : "huong", "password" : "password1", "profession" : "sinhvien", "id": }, "user2" : { "name" : "manh", "password" : "password2", "profession" : "giangvien", "id": }, "user3" : { "name" : "tuyen", "password" : "password3", "profession" : "laptrinhvien", "id": } } Dựa vào thông tin này, cung cấp RESTful API sau đây: Stt URI Phương thức HTTP POST body Kết listUsers GET empty Hiển thị danh sách user addUser POST JSON String Thêm user deleteUser DELETE JSON String Xóa user :id GET empty Hiển thị chi tiết user Liệt kê User Chúng ta triển khai RESTful API có tên listUsers sử dụng đoạn code sau đây: 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 ); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Ung dung Node.js dang lang nghe tai dia chi: http://%s:%s", host, port) }) Bây thử truy cập API định nghĩa sử dụng http://127.0.0.1:8081/listUsers máy tính local Nó cho kết sau đây: { "user1" : { "name" : "huong", "profession" : "sinhvien", "id": "manh", "password" : "password2", }, "password" : "password1", "user2" : { "name" : "profession" : "giangvien", http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/nodejs/index.jsp Copyright © vietjack.com "id": }, "password3", "user3" : { "name" : "tuyen", "profession" : "laptrinhvien", "password" : "id": } } Thêm User API sau cách thêm User vào danh sách Dưới thông tin User mới: user = { "user4" : { "profession" : "sinhvien", "name" : "hoang", "id": } } "password" : "password4", Bạn sử dụng Ajax để thực việc này, để đơn giản hard code Dưới phương thức addUser API để thêm user sở liệu var express = require('express'); var app = express(); var fs = require("fs"); var user = { "user4" : { "name" : "hoang", "password" : "password4", "profession" : "sinhvien", "id": } } app.get('/addUser', function (req, res) { // Dau tien, doc tat ca cac User dang ton tai 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)); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Ung dung Node.js dang lang nghe tai dia chi: http://%s:%s", host, port) }) Bây thử truy cập API sử dụng http://127.0.0.1:8081/addUsers máy tính local Kết sau: { user1: { name: 'huong', password: 'password1', profession: 'sinhvien', id: }, user2: { name: 'manh', password: 'password2', profession: 'giangvien', id: }, user3: { name: 'tuyen', password: 'password3', profession: 'laptrinhvien', id: }, user4: { name: 'hoang', password: 'password4', profession: 'sinhvien', id: } } Hiển thị thông in User Bây triển khai API mà gọi đến userID để hiển thị chi tiết thông tin User tương ứng var express = require('express'); var app = express(); var fs = require("fs"); app.get('/:id', function (req, res) { // Dau tien, doc tat ca cac User dang ton tai fs.readFile( dirname + "/" + "users.json", 'utf8', function (err, data) { users = JSON.parse( data ); var user = users["user" + req.params.id] console.log( user ); res.end( JSON.stringify(user)); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/nodejs/index.jsp Copyright © vietjack.com console.log("Ung dung Node.js dang lang nghe tai dia chi: http://%s:%s", host, port) }) Tiêp đó, bạn gọi service sử dụng địa http://127.0.0.1:8081/2 máy tính local Kết sau: { "name":"manh", "password":"password2", "profession":"giangvien", "id":2 } Xóa User API tương tự addUser API, bạn nhận liệu đầu vào thơng qua req.body sau dựa vào userID để xóa User khỏi Database Để đơn giản, giả sử xóa user có ID var express = require('express'); var app = express(); var fs = require("fs"); var id = 2; app.get('/deleteUser', function (req, res) { // Dau tien, doc tat ca cac User dang ton tai fs.readFile( dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); delete data["user" + 2]; console.log( data ); res.end( JSON.stringify(data)); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Ung dung Node.js dang lang nghe tai dia chi: http://%s:%s", host, port) }) Gọi service sử dụng http://127.0.0.1:8081/deleteUser máy local Nó cho kết sau đây: { user1: 'sinhvien', 'password3', { name: 'huong', id: }, password: 'password1', user3: { name: 'tuyen', profession: 'laptrinhvien', id: } profession: password: } http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 ...http://vietjack.com /nodejs/ index.jsp Copyright © vietjack.com Tạo RESTful cho thư... "password" : "password3", "profession" : "laptrinhvien", "id": } } Dựa vào thông tin này, cung cấp RESTful API sau đây: Stt URI Phương thức HTTP POST body Kết listUsers GET empty Hiển thị danh sách user... JSON String Xóa user :id GET empty Hiển thị chi tiết user Liệt kê User Chúng ta triển khai RESTful API có tên listUsers sử dụng đoạn code sau đây: var express = require('express'); var app =