Hướng dẫn nguyên tắc của REST

Máy chủ và Client (máy khách) : Bằng cách tách những thứ liên quan về giao diện người dùng khỏi những thứ liên quan tới dữ liệu, chúng ta đã tăng tính khả chuyển của giao diện người dùng trên nhiều nền tảng và cải thiện khả năng mở rộng bằng cách đơn giản hóa các thành phần dữ liệu từ máy chủ. Nghĩa là máy khách và máy chủ hoạt động độc lập, sự tương tác giữa chúng chỉ ở dạng yêu cầu, chỉ khi máy khách khởi tạo yêu cầu thì khi đó máy chủ mới gửi một phản hồi tương ứng với yêu cầu. Các máy chủ chỉ ngồi đó chờ yêu cầu từ khách hàng đến. Máy chủ không gửi thông tin về trạng thái của các phản hồi đó.

Không trạng thái : Mỗi yêu cầu từ máy khách đến máy chủ phải chứa tất cả thông tin cần thiết để máy chủ hiểu yêu cầu và không thể tận dụng bất kỳ trạng thái hay phiên nào được lưu trữ nào trên máy chủ. Do đó trạng thái phiên làm việc được lưu trữ hoàn toàn trên máy khách. Không trạng thái có nghĩa là máy chủ không nhớ bất cứ điều gì về người dùng sử dụng API về máy khách. Nó không nhớ nếu người dùng API đã gửi yêu cầu GET cho cùng một tài nguyên trong quá khứ, nó không tài nguyên nào mà người dùng API đã yêu cầu trước đó, v.v. Mỗi yêu cầu riêng lẻ từ máy khách phải chứa tất cả thông tin mà máy chủ cần để thực hiện yêu cầu, bất kể các yêu cầu này đã gửi trước đó hay sau này, được thực hiện bởi cùng một người dùng API hay khác.

Có thể lưu trong bộ nhớ cache : Bộ nhớ đệm yêu cầu dữ liệu trong phản hồi yêu cầu từ máy chủ phải được đánh dâu ngầm hoặc rõ ràng là có thể lưu trong bộ nhớ cache hoặc không lưu trong bộ nhớ cache. Nếu một phản hồi đánh dấu là được lưu trong bộ nhớ cache, thì bộ đệm của máy khách sẽ được trao quyền sử dụng lại dữ liệu phản hồi đó cho các yêu cầu tương đương sau này. Điều này có nghĩa là dữ liệu mà máy chủ gửi có chứa thông tin về việc dữ liệu có được lưu trong bộ nhớ cache hay không. Nếu dữ liệu được lưu trong bộ nhớ cache, nó có thể chứa một số phiên bản. Số phiên bản là thứ giúp cho bộ nhớ đệm có thể thực hiện được: vì máy khách biết phiên bản dữ liệu nào đã có (từ phản hồi trước đó), máy khách có thể tránh yêu cầu lặp lại cùng một dữ liệu. Máy khách cũng biết nếu phiên bản hiện tại của dữ liệu đã hết hạn, trong trường hợp đó, máy khách sẽ biết gửi yêu cầu mới đến máy chủ để nhận dữ liệu cập nhật mới nhất về phiên bản.

Kết nối thống nhất – Bằng cách áp dụng nguyên tắc công nghệ phần mềm cho thành phần kết nối , kiến ​​trúc hệ thống tổng thể được đơn giản hóa và khả năng hiển thị của các tương tác được cải thiện. Để có được kết nối thống nhất, cần có nhiều ràng buộc về kiến ​​trúc để hướng dẫn thực thi của các thành phần. REST được xác định bởi bốn ràng buộc kết nối : xác định tài nguyên; điều chỉnh tài nguyên từ phản hồi; mô tả yêu cầu; và, hypermedia như là mô tả trạng thái ứng dụng.  Cụ thể :

Yêu cầu đến máy chủ phải bao gồm một định danh tài nguyên
Phản hồi mà máy chủ trả về bao gồm đủ thông tin để máy khách có thể sửa đổi tài nguyên
Mỗi yêu cầu đối với API chứa tất cả thông tin mà máy chủ cần để thực hiện yêu cầu và mỗi phản hồi mà máy chủ trả về phải chứa tất cả thông tin máy khách cần để hiểu phản hồi.
Hypermedia là mô tả của trạng thái ứng dụng – điều này nghe có vẻ hơi khó hiểu, vì vậy, hãy làm rõ nó: chúng ta muốn nói đến ứng dụng web mà máy chủ đang chạy. Bằng hypermedia, chúng ta đề cập đến các siêu liên kết, hoặc đơn giản là các liên kết, mà máy chủ có thể bao gồm trong phản hồi. Toàn bộ nội dung mà máy chủ có thể thông báo cho máy khách, trong một phản hồi, về các cách để thay đổi trạng thái của ứng dụng web. Nếu máy khách yêu cầu một người dùng cụ thể, máy chủ có thể cung cấp không chỉ trạng thái của người dùng đó mà còn cung cấp thông tin về cách thay đổi trạng thái của người dùng, ví dụ như cách cập nhật tên người dùng hay cách xóa người dùng. Thật dễ dàng để suy nghĩ về cách thức mà nó thực hiện bằng cách nghĩ về việc một máy chủ trả lại phản hồi ở định dạng HTML cho trình duyệt (là máy khách). HTML sẽ bao gồm các thẻ có liên kết (đây là phần hypermedia) đến một trang web khác nơi người dùng có thể được cập nhật (ví dụ: liên kết đến trang cài đặt hồ sơ Trang). Để đặt tất cả những điều này trong phản hồi , hầu hết các trang web đều thực hiện hypermedia như là công cụ của trạng thái ứng dụng, nhưng các API web phổ biến nhất không tuân thủ ràng buộc này.

Hệ thống phân lớp : Hệ thống phân lớp cho phép một kiến ​​trúc được tạo thành từ các lớp phân cấp bằng cách hạn chế thành phần sao cho mỗi thành phần không thể nhìn lớp bên ngoài mà chúng đang tương tác. Nghĩa là giữa máy khách gửi yêu cầu và máy chủ gửi phản hồi trở lại, có thể có một số máy chủ trung gian. Các máy chủ này có thể cung cấp lớp bảo mật, lớp lưu trữ, lớp cân bằng tải hoặc chức năng khác. Những lớp đó sẽ không ảnh hưởng đến yêu cầu hoặc phản hồi. Máy khách sẽ không thể biết có bao nhiêu lớp, nếu có, chỉ biết máy khách và máy chủ thực tế đáp ứng yêu cầu.

Mã theo yêu cầu (tùy chọn) – REST cho phép chức năng máy khách được mở rộng bằng cách tải xuống và thực thi mã dưới dạng applet hoặc script. Điều này giúp đơn giản hóa khách hàng bằng cách giảm số lượng các tính năng cần thiết để được triển khai trước.