Tóm lại
- Sử dụng
GET
cho safe and
idempotent
các yêu cầu
- Sử dụng
POST
cho neither safe nor idempotent
các yêu cầu
Trong chi tiết
Có một nơi thích hợp cho mỗi. Ngay cả khi bạn không tuân theo các nguyên tắc RESTful , có thể thu được rất nhiều từ việc tìm hiểu về REST và cách tiếp cận theo hướng tài nguyên hoạt động.
Một ứng dụng RESTful sẽ use GETs
cho các hoạt động là cả hai safe and idempotent
.
Một safe
hoạt động là một hoạt động không not change the data
yêu cầu.
Một idempotent
hoạt động là một trong đó kết quả sẽ cho be the same
dù bạn yêu cầu bao nhiêu lần.
Lý do là, vì các GET được sử dụng cho các hoạt động an toàn, chúng cũng tự động là idempotent . Thông thường, một GET được sử dụng để truy xuất tài nguyên (một câu hỏi và các câu trả lời liên quan của nó về tràn ngăn xếp chẳng hạn) hoặc bộ sưu tập tài nguyên.
Một ứng dụng RESTful sẽ sử dụng PUTs
cho các hoạt động not safe but idempotent
.
Tôi biết câu hỏi là về GET và POST, nhưng tôi sẽ quay lại POST sau một giây.
Thông thường, PUT được sử dụng để chỉnh sửa tài nguyên (ví dụ chỉnh sửa câu hỏi hoặc câu trả lời về lỗi tràn ngăn xếp).
A POST
sẽ được sử dụng cho bất kỳ hoạt động nào neither safe or idempotent
.
Thông thường, POST sẽ được sử dụng để tạo tài nguyên mới, ví dụ như tạo câu hỏi SO MỚI (mặc dù trong một số thiết kế, PUT cũng sẽ được sử dụng cho việc này).
Nếu bạn chạy POST hai lần, cuối cùng bạn sẽ tạo ra HAI câu hỏi mới.
Ngoài ra còn có một hoạt động XÓA, nhưng tôi đoán tôi có thể để nó ở đó :)
Thảo luận
Về mặt thực tế, các trình duyệt web hiện đại thường chỉ hỗ trợ GET và POST một cách đáng tin cậy (bạn có thể thực hiện tất cả các thao tác này thông qua các cuộc gọi javascript, nhưng về mặt nhập dữ liệu trong các biểu mẫu và nhấn gửi bạn thường có hai tùy chọn). Trong một ứng dụng RESTful, POST thường sẽ được ghi đè để cung cấp các lệnh gọi PUT và DELETE.
Nhưng, ngay cả khi bạn không tuân theo các nguyên tắc RESTful, việc suy nghĩ về việc sử dụng GET để truy xuất / xem thông tin và POST để tạo / chỉnh sửa thông tin có thể hữu ích.
Bạn không bao giờ nên sử dụng GET cho một hoạt động làm thay đổi dữ liệu. Nếu một công cụ tìm kiếm thu thập một liên kết đến op ác của bạn hoặc đánh dấu trang của khách hàng thì nó có thể gây ra rắc rối lớn.