2010-11-16 30 views
84

Tôi cần gọi quy trình không yêu cầu bất kỳ đầu vào nào từ người dùng, chỉ cần kích hoạt. Tôi dự định sử dụng POST/uri mà không có cơ thể để kích hoạt quá trình. Tôi muốn biết nếu điều này được coi là xấu từ cả hai quan điểm HTTP và REST?Có được coi là thực hành không tốt để thực hiện HTTP POST không có nội dung thực thể không?

+2

Cảm ơn mọi người đã đề xuất của bạn. Mặc dù mọi người đều đưa ra đề xuất tương tự, tức là POST có nội dung bằng không, tôi chọn câu trả lời của Darrel là chính xác do liên kết đến thảo luận IETF. Cuộc thảo luận làm rõ rất nhiều. –

Trả lời

67

Tôi đã hỏi this question về nhóm làm việc HTTP IETF cách đây vài tháng. Câu trả lời ngắn gọn là, có nó là OK, nhưng tôi đề nghị đọc các chủ đề để biết thêm chi tiết.

36

Sử dụng POST thay vì GET là hoàn toàn hợp lý, vì nó cũng chỉ thị cho máy chủ (và cổng trên đường đi) không trả về phản hồi được lưu trong bộ nhớ cache.

+4

+1 Hmm tốt để biết. – Ben

9

Nếu bạn sử dụng POST/uri mà không có phần thân, nó giống như sử dụng hàm không tham số .e.g int post (void); do đó, nó là hợp lý để có chức năng cho lớp tài nguyên của bạn mà có thể thay đổi trạng thái của một đối tượng mà không cần có một đối số. Nếu bạn xem xét để thực hiện các chức năng cảm ứng Unix cho một URI, nó không phải là sự lựa chọn tốt?

+1

Chạm/ngón tay là một minh họa sách giáo khoa về hành động không phải là độc quyền vốn ít nội dung. –

20

POST hoàn toàn OK. Trong sự khác biệt của GET với POST bạn đang thay đổi trạng thái của hệ thống (rất có thể kích hoạt của bạn là "làm" một cái gì đó và thay đổi dữ liệu).

Tôi đã sử dụng POST chưa có trọng tải và "cảm thấy" OK. Một điều bạn nên làm khi sử dụng POST mà không cần tải trọng: Vượt qua tiêu đề Content-Length: 0. Tôi nhớ vấn đề với một số proxy khi tôi api-client không vượt qua nó.

Các vấn đề liên quan