REST là gì?
REST (Representational State Transfer) là một kiến trúc phần mềm dùng để thiết kế các hệ thống phân tán, đặc biệt là các API web, dựa trên các giao thức chuẩn như HTTP. Kiến trúc này nhấn mạnh tính stateless, nơi mỗi yêu cầu từ client độc lập và không phụ thuộc vào trạng thái trước đó của server. REST được Roy Fielding đề xuất năm 2000, trở thành nền tảng cho hầu hết các REST API (hay RESTful API) hiện nay.
REST tập trung vào việc quản lý tài nguyên (resources) thông qua các URI duy nhất và phương thức HTTP chuẩn. Nó hỗ trợ trao đổi dữ liệu dưới dạng JSON, XML hoặc các định dạng khác, giúp các ứng dụng giao tiếp hiệu quả.
Vai trò của REST trong tích hợp hệ thống
REST đóng vai trò trung tâm trong việc kết nối các hệ thống khác nhau trong automation và workflow, cho phép workflow tools như n8n gọi API để lấy, tạo, cập nhật hoặc xóa dữ liệu từ các dịch vụ bên ngoài. Trong tích hợp hệ thống, REST làm cầu nối giữa client (như ứng dụng automation) và server, hỗ trợ các thao tác CRUD (Create, Read, Update, Delete).
Ví dụ, trong một workflow tự động hóa, node HTTP Request có thể dùng REST để lấy dữ liệu từ /users trên server CRM, sau đó xử lý và đẩy sang hệ thống khác. Điều này giúp xây dựng các pipeline linh hoạt mà không cần chia sẻ trạng thái session.
REST vượt trội ở tính mở rộng (scalability) nhờ stateless, phù hợp cho hệ thống lớn với nhiều request đồng thời.
REST hoạt động như thế nào trong thực tế?
REST hoạt động bằng cách client gửi yêu cầu HTTP đến URI đại diện cho tài nguyên, server xử lý và trả về phản hồi với dữ liệu đại diện (representation). Mỗi yêu cầu phải chứa đầy đủ thông tin cần thiết, không lưu trạng thái trên server.
Các thành phần chính bao gồm:
- URI: Định danh tài nguyên, ví dụ
https://api.example.com/users/123. - HTTP Methods:
GET: Lấy dữ liệu (read), ví dụGET /userstrả danh sách user.POST: Tạo mới, ví dụPOST /usersvới body JSON chứa dữ liệu user mới.PUThoặcPATCH: Cập nhật toàn bộ hoặc một phần tài nguyên.DELETE: Xóa tài nguyên, ví dụDELETE /users/123.- Headers: Chỉ định
Content-Type: application/jsoncho request body,Accept: application/jsoncho response. - Status Codes:
200 OKthành công,201 Createdtạo mới,404 Not Foundkhông tồn tại.
Trong workflow, một chuỗi node có thể: Trigger → HTTP Request (GET) → Data Transformation → HTTP Request (POST).
Những lưu ý quan trọng về REST
Khi triển khai REST trong automation, cần chú ý một số điểm để tránh lỗi phổ biến:
- Stateless: Không lưu session trên server; mỗi request phải tự chứa authentication như
Authorization: Bearer tokenhoặc API Key. - HATEOAS (Hypermedia as the Engine of Application State): Lý tưởng là response chứa link đến các hành động tiếp theo, nhưng không phải lúc nào cũng bắt buộc.
- Versioning: Sử dụng
/v1/usersđể tránh phá vỡ client cũ khi thay đổi API. - Bảo mật: Luôn dùng HTTPS, OAuth 2.0 cho authorization, tránh lộ thông tin nhạy cảm trong URI.
- Lỗi phổ biến: Sử dụng sai method (như POST thay vì GET cho read), bỏ qua
Content-Type, hoặc không xử lý pagination cho danh sách lớn.
Nhiều hệ thống áp dụng rate limiting, nên workflow cần cơ chế retry và timeout.
Các thuật ngữ liên quan đến REST
Dưới đây là một số thuật ngữ thường gặp liên quan đến REST trong automation và workflow:
- RESTful API: API tuân thủ nguyên tắc REST, sử dụng HTTP methods chuẩn để thao tác tài nguyên.
- URI: Địa chỉ duy nhất định danh tài nguyên, thường là URL như
/api/users. - Stateless: Đặc tính REST nơi server không lưu trạng thái giữa các request.
- CRUD: Các thao tác cơ bản (Create, Read, Update, Delete) ánh xạ sang POST, GET, PUT/DELETE.
Các câu hỏi thường gặp
REST khác gì so với SOAP?
REST đơn giản hơn, dùng HTTP thuần túy và stateless, trong khi SOAP là protocol phức tạp với XML và stateful hơn, ít dùng trong automation hiện đại.
Khi nào nên dùng PUT thay vì POST?
Dùng PUT để cập nhật hoặc tạo toàn bộ tài nguyên với ID cụ thể, còn POST để tạo mới mà server tự assign ID.
Làm sao xử lý lỗi 429 Too Many Requests trong REST?
Triển khai retry với exponential backoff trong workflow, kết hợp theo dõi rate limiting từ header X-RateLimit-Remaining.
REST có hỗ trợ real-time data không?
REST chủ yếu cho request-response; dùng Webhook hoặc WebSocket cho real-time thay vì polling liên tục.