
REST (REpresentational State Transfer) về cơ bản là một kiểu thiết kế trong phát triển phần mềm mà có 1 số quy tắc sau:
– Nó nên là stateless
– Nó thường chỉ lấy các resources của server thông qua URI
– Nó thường ko có session
– Chỉ sử dụng phương thức – HTTP
– Dùng các method HTTP: GET, POST, PUT, DELETE để thực hiện các quá trình CRUD (tạo, thêm. sửa, xóa)
– Kết quả trả về thường ở dạng JSON hoặc XML, atom, OData etc. (lightweight data)
REST based services sẽ có một vài những nguyên tắc trên
RESTful services sẽ tuân theo tất cả những nguyên tắc trên
I. Bảng so sánh REST vs RESTful
II. Sự khác biệt chính giữa REST vs RESTful trong các điểm sau:
1. Architecture
Kiến trúc của ứng dụng REST có một máy khách-máy chủ, không trạng thái, bộ nhớ cache, hệ thống lớp và giao diện thống nhất. Nhưng trong các ứng dụng web RESTful, nó đã kết hợp kiến trúc giống như REST nhưng nó được tích hợp sẵn các tính năng độc đáo. Các ứng dụng REST có một hệ thống riêng xử lý thông tin ứng dụng. Máy chủ REST này tương tác với máy khách-máy chủ quản lý sự tương tác của người dùng.
2. Stability
Các máy chủ REST không duy trì bất kỳ trạng thái máy khách nào trong đó máy khách quản lý tất cả các giai đoạn ứng dụng. Yêu cầu đến máy chủ bao gồm tất cả các dữ liệu bắt buộc cần thiết để xử lý chúng. Trong các API RESTful, nếu có bất kỳ biến động nào trong trạng thái, máy khách sẽ trả lời hệ thống để lưu trữ. Lấy dữ liệu tương phản cụ thể từ REST với cơ sở hạ tầng sử dụng các đối tượng phân tán để cản trở thông tin từ các thành phần khác. Nhưng trong các hệ thống REST, máy khách và máy chủ trao đổi kiến thức về trạng thái và dữ liệu. Trong các dịch vụ RESTful, việc che giấu dữ liệu không diễn ra và nó chỉ che giấu việc thực hiện.
3. Cache Ability
Hệ thống REST phải thể hiện phản hồi là có thể lưu trong bộ nhớ cache hoặc không lưu trong bộ nhớ cache. Vì vậy, các khách hàng và cơ sở hạ tầng có thể lưu trữ chúng khi có thể để tăng hiệu suất. Nó có thể thay thế dữ liệu không lưu trong bộ nhớ cache khi không có máy khách nào sử dụng dữ liệu được lưu trữ. Trong các ứng dụng RESTful, trạng thái không thể xóa và thông tin có thể lưu trong bộ nhớ cache có thể truy cập được đến máy khách mọi lúc, mọi nơi.
4. Undeviating Interface
Đó là quy tắc nổi tiếng nhất dựa trên yêu cầu của người dùng. Tính năng trung tâm tách biệt kiến trúc của REST khỏi một sự hỗn loạn phụ thuộc vào mạng khác khi nó được nhúng trên một giao diện không thể tách rời giữa các thiết bị. Các dịch vụ REST cung cấp dữ liệu dưới dạng tài nguyên với một không gian tên riêng và duy nhất.
5. Multi-Layered Architecture
Trong REST, các thiết bị trong hệ thống không thể xem ngoài lớp. vì vậy nó chỉ đơn giản là có thể tăng cường cân bằng tải và tạo một số proxy để tăng cường hiệu suất và bảo mật. Nhưng trong API RESTful, kiến trúc phân lớp được xây dựng trên máy chủ-máy khách nơi các giới hạn không trạng thái được hợp nhất để phát triển một ứng dụng có ranh giới mạnh và tách biệt giữa các ranh giới rõ ràng và khác biệt. Các dataflow ở giữa các lớp dựa trên các yêu cầu của máy khách. Máy khách thao tác dữ liệu hoặc hiển thị nó.
6. Remote Procedure Call on Web Services
Nếu người dùng đề cập rằng nếu một dịch vụ không có trong REST, thì nó đang tìm kiếm tại URI hoạt động hoặc việc sử dụng các dịch vụ trên các động từ HTTP. Nó được gọi là tập hợp tài nguyên thống nhất và nó là biểu diễn cấu trúc của dữ liệu REST. Vì vậy, sự phân tách giữa mỗi khung hoặc lớp này được gọi là REST trong các cuộc gọi thủ tục từ xa. Các dịch vụ web để thêm, lập lịch, xóa bất kỳ đối tượng nào khỏi kho lưu trữ hoặc cơ sở dữ liệu thương mại điện tử có thể được RPC thực hiện trên REST. Liên kết URL duy nhất với truy vấn trên HTTP POST và HTTP GET được sử dụng để tương tác với các dịch vụ bằng cách đăng một tệp và định cấu hình nội dung để hoàn thành yêu cầu. Các lệnh phổ biến được sử dụng để thực hiện các hành động HTTP được sử dụng bởi các dịch vụ REST và RESTful là PUT, DELETE, GET, POST và PATCH với tất cả các giới hạn cụ thể. Các API có cấu trúc có thể trả về các mã duy nhất theo yêu cầu của khách hàng.
7. Maturity Model by Richardson
Các tài nguyên URI sử dụng HTTP làm cho người dùng dự đoán API. Nhưng nếu không thể đoán trước, người dùng có thể tiếp cận các dịch vụ REST cùng với siêu văn bản. Vì vậy, mọi đối tượng có thể được trả về trong ứng dụng kiểm kê bao gồm nhiều liên kết để xóa, chỉnh sửa, nhập hoặc định cấu hình cơ sở dữ liệu kiểm kê của tài nguyên. Các tệp giải thích rằng trước khi bất kỳ dịch vụ nào là RESTful, nó sẽ cung cấp nội dung siêu văn bản như một phần của API. Nhưng nhiều dịch vụ web không đáp ứng nhu cầu này và được gọi là REST. Trong nhiều trang web, các quy tắc được chia thành các phần nhỏ và mô hình Richardson đã tạo ra một REST với nhiều cấp độ tuân thủ với bảo mật nâng cao. Mô hình này cung cấp các hướng dẫn phù hợp, hiệu quả để thiết kế và tạo bất kỳ ứng dụng mới nào.
Tạ Trung Kiên
(Nguồn: Educa)