Node.js - API RESTful
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ởi 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. 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 - Điều này được sử dụng để cung cấp quyền truy cập chỉ đọc vào một tài nguyên.
PUT - Điều này được sử dụng để tạo một tài nguyên mới.
DELETE - Điều này được sử dụng để loại bỏ một tài nguyên.
POST - Điều này được sử dụng để cập nhật một tài nguyên hiện có hoặc tạo một 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 các ngôn ngữ lập trình khác nhau và chạy trên các 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 Java và Python, 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 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 chẳng hạn như JSON và tập hợp các Phương thức HTTP.
Tạo RESTful cho Thư viện
Hãy xem xét chúng tôi có cơ sở dữ liệu dựa trên JSON về những người dùng có những người dùng sau trong một tệp users.json:
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
Dựa trên thông tin này, chúng tôi sẽ cung cấp các API RESTful sau.
Sr.No. | URI | Phương thức HTTP | ĐĂNG nội dung | Kết quả |
---|---|---|---|---|
1 | listUsers | ĐƯỢC | trống | Hiển thị danh sách tất cả người dùng. |
2 | thêm người dùng | BÀI ĐĂNG | Chuỗi JSON | Thêm thông tin chi tiết của người dùng mới. |
3 | xóa người dùng | XÓA BỎ | Chuỗi JSON | Xóa người dùng hiện có. |
4 | :Tôi | ĐƯỢC | trống | Hiển thị chi tiết của một người dùng. |
Tôi đ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 express Request vật.
Liệt kê người dùng
Hãy triển khai API RESTful đầu tiên của chúng tôi listUsers bằng cách sử dụng mã sau trong tệp server.js -
server.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 );
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Bây giờ hãy thử truy cập API đã xác định bằng URL: http://127.0.0.1:8081/listUsers và Phương pháp HTTP: TẢI trên máy cục bộ bằng bất kỳ ứng dụng khách REST nào. Điều này sẽ tạo ra kết quả sau:
Bạn có thể thay đổi địa chỉ IP đã cho khi bạn đưa giải pháp vào môi trường sản xuất.
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
Thêm người dùng
Sau đây API sẽ hướng dẫn 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" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
Bạn có thể chấp nhận cùng một đầu vào ở 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àaddUser API cho người dùng mới trong cơ sở dữ liệu -
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
app.post('/addUser', function (req, res) {
// First read existing users.
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("Example app listening at http://%s:%s", host, port)
})
Bây giờ, hãy thử truy cập API đã xác định bằng URL: http://127.0.0.1:8081/addUser và Phương pháp HTTP: POST trên máy cục bộ bằng bất kỳ ứng dụng khách REST nào. Điều này sẽ tạo ra kết quả sau:
{
"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user2":{"name":"suresh","password":"password2","profession":"librarian","id":2},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3},
"user4":{"name":"mohit","password":"password4","profession":"teacher","id":4}
}
Hiển thị chi tiết
Bây giờ chúng 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.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function (req, res) {
// First read existing users.
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));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Bây giờ, hãy thử truy cập API đã xác định bằng URL: http://127.0.0.1:8081/2 và Phương pháp HTTP: TẢI trên máy cục bộ bằng bất kỳ ứng dụng khách REST nào. Điều này sẽ tạo ra kết quả sau:
{"name":"suresh","password":"password2","profession":"librarian","id":2}
Xóa người dùng
API này rất giống với API addUser nơi chúng tôi nhận dữ liệu đầu vào thông qua req.body và sau đó dựa trên ID người dùng, chúng tôi xóa người dùng đó khỏi cơ sở dữ liệu. Để giữ cho chương trình của chúng tôi đơn giản, chúng tôi giả định rằng chúng tôi sẽ xóa người dùng có ID 2.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.delete('/deleteUser', function (req, res) {
// First read existing users.
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("Example app listening at http://%s:%s", host, port)
})
Bây giờ, hãy thử truy cập API đã xác định bằng URL: http://127.0.0.1:8081/deleteUser và Phương pháp HTTP: DELETE trên máy cục bộ sử dụng bất kỳ ứng dụng khách REST nào. Điều này sẽ tạo ra kết quả sau:
{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}