มีอะไรที่ไม่เกี่ยวข้องกับการระบุพารามิเตอร์ให้กับคำขอ HTTP DELETE หรือไม่
สถานการณ์ของฉันคือฉันกำลังสร้างโมเดล "คุณแน่ใจหรือไม่ว่าต้องการลบสิ่งนั้น" สถานการณ์ ในบางกรณีสถานะของทรัพยากรบ่งชี้ว่าการลบที่ร้องขออาจไม่ถูกต้อง คุณอาจนึกภาพบางสถานการณ์ที่ต้องมีการยืนยันการลบ
วิธีแก้ปัญหาที่เรานำมาใช้คือการส่งพารามิเตอร์ไปยังคำขอลบเพื่อระบุว่าสามารถดำเนินการลบได้ ("? force_delete = true")
เช่น
DELETE http://server/resource/id?force_delete=true
ฉันเชื่อว่ามันยังคงผ่อนคลายตั้งแต่:
(a) ไม่มีการเปลี่ยนแปลงความหมายของ DELETE - ผู้ใช้ยังคงสามารถส่งคำขอ DELETE ตามปกติได้ แต่อาจล้มเหลวด้วย 409 และเนื้อหาของการตอบกลับจะอธิบายสาเหตุ ฉันบอกว่าอาจล้มเหลวเนื่องจาก (ด้วยเหตุผลที่ไม่คุ้มค่าที่จะอธิบาย) ในบางครั้งไม่มีเหตุผลที่จะแจ้งให้ผู้ใช้ทราบ
(b) ไม่มีอะไรในวิทยานิพนธ์ของ Roy ที่ชี้ให้เห็นว่ามันขัดต่อเจตนารมณ์ของ REST - ทำไมถึงเป็นเช่นนั้นเนื่องจาก HTTP เป็นเพียงการใช้งาน REST เพียงครั้งเดียวดังนั้นทำไมการส่งผ่านพารามิเตอร์ HTTP จึงมีความสำคัญ
ใครช่วยชี้ฉันด้วยคำพูดที่ชัดเจนว่าทำไมสิ่งนี้ถึงไม่สงบ?
ในคำถามที่เกี่ยวข้องหากผู้ใช้ไม่ได้ระบุ force_delete ฉันจะส่งคืน409 Conflict
- รหัสตอบกลับที่เหมาะสมที่สุดหรือไม่
ติดตาม
หลังจากการวิจัยเพิ่มเติมฉันคิดว่าการเพิ่มพารามิเตอร์ใน DELETE อาจละเมิดหลักการหลายประการ
ประการแรกคือการใช้งานอาจละเมิด "Uniform Interface" (ดูหัวข้อ 5.1.5 ของวิทยานิพนธ์ของ Roy
ด้วยการเพิ่ม 'force_delete' เรากำลังเพิ่มข้อ จำกัด เพิ่มเติมในเมธอด DELETE ที่กำหนดไว้อย่างดี ข้อ จำกัด นี้มีความหมายสำหรับเราเท่านั้น
นอกจากนี้คุณยังสามารถโต้แย้งได้ว่าละเมิด "5.1.2 ไคลเอนต์ - เซิร์ฟเวอร์" เนื่องจากกล่องโต้ตอบการยืนยันเป็นปัญหาเกี่ยวกับ UI และลูกค้าบางรายอาจไม่ต้องการยืนยันการลบ
มีใครแนะนำไหม