REST API là một cách phổ biến để thiết kế web API xoay quanh resource như người dùng, bài toán hoặc đơn hàng. Mỗi resource có một URL riêng, và các phương thức HTTP như GET, POST, PATCH, DELETE cho máy chủ biết client muốn làm gì.
REST là viết tắt của Representational State Transfer. Trong thực tế, client gửi một HTTP request, máy chủ trả về biểu diễn của một resource, và mỗi request nên tự có đủ ý nghĩa. Nhiều REST API trả về JSON, nhưng chỉ dùng JSON thôi thì chưa đủ để một API trở thành RESTful.
Ý Nghĩa của REST API: Hãy Nghĩ Theo Resource
Cách nhanh nhất để hiểu REST là nghĩ theo danh từ, không phải động từ.
Nếu hệ thống của bạn có bài toán, học sinh và lần làm bài, thì đó có thể là các resource. Một API định hướng theo resource thường dùng các URL như /api/problems/42 hoặc /api/attempts/9001.
Khi đó, phương thức HTTP sẽ cho biết loại thao tác đang diễn ra:
GETđọc một resourcePOSTtạo một resource mớiPUTthay thế một resourcePATCHcập nhật một phần của resourceDELETExóa một resource
Sự tách biệt đó là điều khiến REST dễ đọc nhanh. URL cho biết bạn đang làm việc với cái gì. Method cho biết bạn muốn làm gì.
Một REST API Request Hoạt Động Như Thế Nào
Trong luồng điển hình, trình duyệt, ứng dụng di động hoặc một dịch vụ khác sẽ gửi request đến máy chủ. Request đó gồm URL, phương thức HTTP, header tùy chọn, và đôi khi có cả body.
Máy chủ đọc request, thực hiện hành động, rồi trả về response. Response đó thường gồm mã trạng thái như 200 OK, 201 Created hoặc 404 Not Found, cùng với dữ liệu mô tả kết quả.
Một điều kiện quan trọng là statelessness. Trong REST, mỗi request nên chứa đủ ngữ cảnh cần thiết cho chính request đó. Điều này không có nghĩa là máy chủ không lưu dữ liệu nào. Nó có nghĩa là máy chủ không nên cần một trạng thái hội thoại ẩn từ các request trước để hiểu request hiện tại.
Ví Dụ REST API: Ứng Dụng Luyện Toán
Giả sử một ứng dụng luyện toán lưu các bài đại số và các lần làm bài của học sinh.
Để đọc bài toán , client có thể gửi:
Cần trợ giúp giải bài?
Tải câu hỏi lên và nhận lời giải từng bước đã được xác minh trong vài giây.
Mở GPAI Solver →