Có bất cứ điều gì không RESTful về việc cung cấp các tham số cho yêu cầu XÓA HTTP không?
Kịch bản của tôi là tôi đang lập mô hình "Bạn có chắc chắn muốn xóa nó không?" kịch bản. Trong một số trường hợp, trạng thái của tài nguyên cho thấy việc xóa được yêu cầu có thể không hợp lệ. Bạn có thể tự mình tưởng tượng một số tình huống trong đó yêu cầu xác nhận xóa
Giải pháp chúng tôi đã áp dụng là chuyển một tham số cho yêu cầu xóa để chỉ ra rằng bạn có thể tiến hành xóa ("? Force_delete = true")
ví dụ
DELETE http://server/resource/id?force_delete=true
Tôi tin rằng nó vẫn còn yên tĩnh kể từ:
(a) Các ngữ nghĩa của XÓA không bị thay đổi - người dùng vẫn có thể gửi yêu cầu XÓA bình thường nhưng điều này có thể thất bại với 409 và phần thân của phản hồi sẽ giải thích lý do. Tôi nói có thể thất bại bởi vì (vì lý do không đáng để giải thích) trong một số trường hợp không có lý do để nhắc nhở người dùng.
(b) Không có gì trong luận án của Roy để đề xuất rằng nó trái với tinh thần của REST - tại sao lại có vì HTTP chỉ là một triển khai của REST, vậy tại sao việc truyền các tham số HTTP lại quan trọng
Ai đó có thể chỉ cho tôi một tuyên bố dứt khoát rằng lý do tại sao điều này không phải là RESTful?
Đối với một câu hỏi liên quan, nếu người dùng không chỉ định Force_delete thì tôi sẽ trả lại 409 Conflict
- đó có phải là mã phản hồi phù hợp nhất không?
Theo sát
Sau một số nghiên cứu sâu hơn, tôi nghĩ rằng việc thêm các tham số vào XÓA có thể vi phạm một số nguyên tắc.
Đầu tiên là việc triển khai có thể vi phạm "Giao diện thống nhất" (xem phần 5.1.5 của luận án của Roy
Bằng cách thêm 'force_delete', chúng tôi sẽ thêm một ràng buộc bổ sung vào phương thức XÓA đã được xác định rõ. Hạn chế này chỉ có ý nghĩa đối với chúng tôi.
Bạn cũng có thể lập luận rằng nó vi phạm "5.1.2 Máy khách-Máy chủ" do cuộc đối thoại xác nhận thực sự là mối quan tâm của UI và một lần nữa không phải tất cả khách hàng sẽ muốn xác nhận xóa.
Gợi ý cho ai?