Tôi đang thiết kế một API để vượt qua HTTP và tôi tự hỏi nếu sử dụng lệnh HTTP POST, nhưng chỉ với các tham số truy vấn URL và không có phần thân yêu cầu, là một cách tốt để đi.
Cân nhắc:
- "Thiết kế web tốt" yêu cầu các hành động không bình thường được gửi qua POST. Đây là một hành động không bình thường.
- Việc phát triển và gỡ lỗi ứng dụng này sẽ dễ dàng hơn khi các tham số yêu cầu có trong URL.
- API không dành cho sử dụng rộng rãi.
- Có vẻ như việc thực hiện một yêu cầu POST không có phần thân sẽ tốn nhiều công sức hơn, ví dụ như một
Content-Length: 0
tiêu đề phải được thêm rõ ràng. - Đối với tôi, dường như một POST không có phần thân là một chút trái ngược với hầu hết các kỳ vọng của các nhà phát triển và HTTP.
Có bất kỳ cạm bẫy hoặc lợi thế nào để gửi tham số trên một yêu cầu POST thông qua truy vấn URL thay vì cơ thể yêu cầu không?
Chỉnh sửa: Lý do điều này đang được xem xét là các hoạt động không bình thường và có tác dụng phụ khác ngoài truy xuất. Xem thông số kỹ thuật HTTP :
Cụ thể, quy ước đã được thiết lập rằng các phương thức GET và HEAD KHÔNG NÊN có ý nghĩa của việc thực hiện một hành động nào khác ngoài truy xuất. Những phương pháp này nên được coi là "an toàn". Điều này cho phép các tác nhân người dùng đại diện cho các phương thức khác, chẳng hạn như POST, PUT và DELETE, theo một cách đặc biệt, để người dùng nhận thức được thực tế rằng một hành động có thể không an toàn đang được yêu cầu.
...
Các phương thức cũng có thể có thuộc tính "idempotence" trong đó (ngoài các vấn đề lỗi hoặc hết hạn), các tác dụng phụ của N> 0 yêu cầu giống hệt như đối với một yêu cầu. Các phương thức GET, Head, PUT và DELETE chia sẻ thuộc tính này. Ngoài ra, các phương thức TÙY CHỌN và TRACE KHÔNG NÊN có tác dụng phụ, và do đó vốn dĩ không có tác dụng.