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 khái niệm trong đó mọi thành phần là tài nguyên và tài nguyên được truy cập bởi một giao diện chung bằng các phương thức tiêu chuẩn HTTP. REST được giới thiệu lần đầu tiên bởi Roy Fielding vào năm 2000.
Máy chủ REST chỉ đơn giản 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. Tại đây, mỗi tài nguyên được xác định bằng 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à dạng phổ biến nhất.
phương thức HTTP
Bốn phương thức HTTP sau 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 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 để xóa tài nguyên.
- POST − Điều này đượ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.
Dịch vụ web RESTful
Dịch vụ web là 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 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 các ứng dụng Java và Python hoặc 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, Mã đị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
Hãy xem xét chúng tôi có cơ sở dữ liệu dựa trên JSON của người dùng có những người dùng sau trong 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.
Sơ Không. | URI | Phương thức HTTP | nội dung BÀI ĐĂNG | 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 chi tiết của người dùng mới. |
3 | deleteUser | DELETE | Chuỗi JSON | Xóa một người dùng hiện có. |
4 | :id | GET | empty | Hiển thị thông tin chi tiết của 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ả định rằng 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 Yêu cầu nhanh.
Liệt kê người dùng
Hãy triển khai danh sách API RESTful đầu tiên của chúng taNgười dùng bằng cách sử dụng đoạn mã sau trong tệp server.js –
máy chủ.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 thức HTTP: GET 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 đư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
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à thông tin 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à API addUser cho người dùng mới trong cơ sở dữ liệu –
máy chủ.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 thức 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 tôi sẽ triển khai một API sẽ được gọi bằng ID người dùng và nó sẽ hiển thị chi tiết của người dùng tương ứng.
máy chủ.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 thức HTTP: GET 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.
máy chủ.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 thức HTTP: XÓA 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}, "user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}