ฉันกำลังออกแบบ API ให้ใช้งาน HTTP และฉันสงสัยว่าถ้าใช้คำสั่ง HTTP POST แต่ด้วยพารามิเตอร์การสืบค้น URL เท่านั้นและไม่มีเนื้อหาคำขอเป็นวิธีที่ดี
การพิจารณา:
- "การออกแบบเว็บที่ดี" ต้องมีการดำเนินการที่ไม่ใช่ idempotent ผ่านทาง POST นี่คือการกระทำที่ไม่ใช่ idempotent
- การพัฒนาและแก้ไขข้อบกพร่องของแอปนี้ง่ายขึ้นเมื่อมีพารามิเตอร์คำขออยู่ใน URL
- API ไม่ได้มีไว้สำหรับใช้อย่างแพร่หลาย
- ดูเหมือนว่าการร้องขอ POST โดยไม่มีเนื้อหาจะทำงานได้อีกเล็กน้อยเช่น
Content-Length: 0
ส่วนหัวจะต้องเพิ่มอย่างชัดเจน - สำหรับฉันแล้วดูเหมือนว่า POST ที่ไม่มีร่างกายนั้นนับว่าตอบสนองต่อความคาดหวังของนักพัฒนาและ HTTP Framework ส่วนใหญ่
มีข้อผิดพลาดหรือข้อได้เปรียบเพิ่มเติมอีกหรือไม่ในการส่งพารามิเตอร์ในคำขอ POST ผ่านการสืบค้น URL แทนที่จะเป็นเนื้อหาคำขอ
แก้ไข: เหตุผลที่อยู่ระหว่างการพิจารณาคือการดำเนินการไม่ใช่ idempotent และมีผลข้างเคียงอื่นนอกเหนือจากการดึงข้อมูล ดูข้อมูลจำเพาะ HTTP :
โดยเฉพาะอย่างยิ่งการประชุมได้รับการจัดตั้งขึ้นว่าวิธีการ GET และหัวไม่ควรมีความสำคัญของการดำเนินการอื่นนอกเหนือจากการดึง วิธีการเหล่านี้ควรได้รับการพิจารณาว่า "ปลอดภัย" สิ่งนี้อนุญาตให้ตัวแทนผู้ใช้แสดงวิธีอื่น ๆ เช่น POST, PUT และ DELETE ในวิธีพิเศษเพื่อให้ผู้ใช้ทราบถึงความจริงที่ว่ามีการร้องขอการดำเนินการที่ไม่ปลอดภัย
...
เมธอดยังสามารถมีคุณสมบัติของ "idempotence" ในนั้น (นอกเหนือจากข้อผิดพลาดหรือปัญหาการหมดอายุ) ผลข้างเคียงของ N> 0 คำร้องขอเหมือนกันนั้นเหมือนกับสำหรับคำร้องขอเดียว เมธอด GET, HEAD, PUT และ DELETE แบ่งปันคุณสมบัตินี้ นอกจากนี้ตัวเลือกวิธีการและการติดตามไม่ควรมีผลข้างเคียงและดังนั้น idempotent โดยเนื้อแท้