Tôi nên sử dụng động từ HTTP nào để kích hoạt một hành động trong dịch vụ web REST?
Khi xem xét các chi tiết của dịch vụ REST, thường rất hữu ích khi xem xét phương pháp phỏng đoán này: bạn sẽ triển khai việc này với một trang web như thế nào?
HTML chỉ có thể mô tả tự nhiên các yêu cầu GET và POST. Vì vậy, chúng ta có thể bắt đầu tìm kiếm ở đó.
Có GET
phù hợp không? Để trả lời câu hỏi này, chúng ta cần suy nghĩ về các giả định mà khách hàng và các thành phần trung gian được phép đưa ra GET
. Các ngữ nghĩa GET
là an toàn
khách hàng không yêu cầu và không mong đợi bất kỳ thay đổi trạng thái nào trên máy chủ gốc do áp dụng phương pháp an toàn cho tài nguyên đích. Tương tự như vậy, việc sử dụng hợp lý một phương pháp an toàn không được dự kiến sẽ gây ra bất kỳ tổn hại, mất mát tài sản hoặc gánh nặng bất thường nào trên máy chủ gốc.
Do đó, hàm ý là các máy khách và các thành phần trung gian có toàn quyền đưa ra yêu cầu GET thường xuyên khi cần thiết để đáp ứng mối quan tâm của riêng chúng. Nhện có thể NHẬN tài nguyên bừa bãi để cập nhật chỉ mục của chúng. Bộ nhớ cache có thể tìm nạp trước. Trên một mạng không đáng tin cậy, các tin nhắn bị mất có thể được kiểm tra lại thường xuyên khi cần thiết để đảm bảo ít nhất một phản hồi.
Nó sẽ được sử dụng để tải lại cấu hình, bộ đệm, v.v.
Nếu đây là những việc đắt đỏ phải làm, thì có lẽ bạn không muốn khách hàng đưa ra những yêu cầu này theo ý mình.
POST
mặt khác, thực sự không bị ràng buộc - điều này làm giảm đáng kể các giả định mà khách hàng chung được phép thực hiện. Bạn không nhận được các thành phần thực hiện các yêu cầu POST đầu cơ vì chúng sẽ bị lỗi khi thực hiện - không có gì trong tiêu chuẩn nói rằng điều đó ổn cả.
PUT
, PATCH
, DELETE
... đây là những phương pháp không an toàn với ngữ nghĩa cụ thể hơn POST
; việc chúng có phù hợp hay không sẽ phụ thuộc vào mô hình tài nguyên của bạn.
Một ý tưởng quan trọng cần ghi nhớ là các phương thức HTTP thuộc về miền tài liệu (Xem bài nói chuyện năm 2011 của Jim Webber ), các hiệu ứng bạn đang mô tả có thể không phải là một phần của miền tài liệu, nhưng thay vào đó là các tác dụng phụ được gọi khi thay đổi tài liệu . Điều đó mang lại cho bạn rất nhiều sự tự do về cách bạn sắp xếp các tài liệu của mình để hoàn thành công việc.