Là một kiến trúc của web API giúp xây dựng những ứng dụng chạy trên giao thức HTTP.
Trước tiên, ta cần hiểu về khái niệm tài nguyên. Một tài nguyên có thể là bất cứ thông tin gì chẳng hạn như document, image hoặc một tập các resource.
Architectural Constraints
Kiến trúc REST bao gồm 6 ràng buộc:
- Uniform interface: cách thức tương tác với server là không thay đổi giữa các thiết bị và ứng dụng khác nhau.
- Stateless: request gửi đi từ client cần phải chứa tất cả các thông tin cần thiết để server có thể hiểu và xử lý. Điều này giúp giảm tải cho server khi nó không phải duy trì và cập nhật trạng thái của session nhưng lại khiến cho client cần phải gửi rất nhiều thông tin.
- Cacheable: mỗi response nên được gán nhãn là cacheable hoặc non-cacheable.
- Client-server: sử dụng kiến trúc client-server giúp tách biệt nhiệm vụ của client và server.
- Client không quan tâm đến data storage mà chỉ quan tâm đến UI và request-gathering.
- Server không quan tâm đến UI và trạng thái của người dùng mà chỉ quan tâm đến việc truy cập dữ liệu, xử lý logic và bảo mật.
- Layered system: kiến trúc ứng dụng có thể là sự kết hợp của nhiều layer. Mỗi layer không biết gì về các layer khác ngoại trừ các layer trung gian. Có thể có nhiều server trung gian giữa client và server chính.
- Code on demand (optional): server cung cấp các executable code cho client. Ví dụ: Java Servlets.
Rules of REST API
Các rule khi tạo các REST API endpoint:
- Một URI của một tài nguyên nào đó luôn phải kết thúc bằng một danh từ số nhiều.
- Các phương thức HTTP được sử dụng để nhận diện các hành động. Có bốn phương thức chính:
- GET: tìm dữ liệu dựa trên request của client.
- PUT: cập nhật một entry ở trong database.
- POST: cho phép server tạo một entry mới ở trong database.
- DELETE: cho phép server xóa một entry ở trong database.
- Luôn trả về các HTTP status code phù hợp để cho biết request là thành công hay thất bại.
Ví dụ:
URI | HTTP verb | Description |
---|---|---|
api/users | GET | Get all users |
api/users/new | GET | Show form for adding new user |
api/users | POST | Add a user |
api/users/1 | PUT | Update a user with id = 1 |
api/users/1/edit | GET | Show edit form for user with id = 1 |
api/users/1 | DELETE | Delete a user with id = 1 |
api/users/1 | GET | Get a user with id = 1 |
Related
list
from [[REST API]]
sort file.ctime asc