แนวคิด REST API
ฉันมีคำถามสามข้อเกี่ยวกับการออกแบบ REST API ที่ฉันหวังว่าบางคนสามารถทำให้เข้าใจได้ ฉันค้นหาอย่างไม่ลดละเป็นเวลาหลายชั่วโมง แต่ไม่พบคำตอบสำหรับคำถามของฉันที่ใดก็ได้ (บางทีฉันอาจไม่รู้ว่าต้องค้นหาอะไร) คำถามที่ 1 คำถามแรกของฉันเกี่ยวกับการกระทำ / RPC ฉันพัฒนา REST API มาระยะหนึ่งแล้วและฉันเคยคิดถึงสิ่งต่าง ๆ ในแง่ของการรวบรวมและทรัพยากร อย่างไรก็ตามฉันได้เจอสองสามกรณีที่กระบวนทัศน์ไม่ได้นำไปใช้และฉันสงสัยว่ามีวิธีที่จะกระทบยอดกับกระบวนทัศน์ REST หรือไม่ โดยเฉพาะฉันมีกรณีที่การแก้ไขทรัพยากรทำให้อีเมลถูกสร้างขึ้น อย่างไรก็ตามในภายหลังผู้ใช้สามารถระบุได้โดยเฉพาะว่าพวกเขาต้องการส่งอีเมลที่ถูกส่งไปก่อนหน้านี้อีกครั้ง เมื่อส่งอีเมลอีกครั้งจะไม่มีการแก้ไขทรัพยากร ไม่มีการเปลี่ยนแปลงสถานะ มันเป็นการกระทำที่ต้องเกิดขึ้น การดำเนินการจะเชื่อมโยงกับประเภททรัพยากรเฉพาะ เหมาะสมไหมที่จะรวมการเรียกการดำเนินการบางอย่างกับ URI ทรัพยากร (เช่น/collection/123?action=resendEmail)? จะเป็นการดีกว่าถ้าระบุการกระทำและส่งรหัสทรัพยากรให้ (เช่น/collection/resendEmail?id=123) นี่เป็นวิธีที่ผิดที่จะเกิดขึ้นหรือไม่? ตามเนื้อผ้า (อย่างน้อยด้วย HTTP) การดำเนินการที่ดำเนินการอยู่เป็นวิธีการร้องขอ (GET, POST, PUT, DELETE) แต่สิ่งเหล่านั้นไม่อนุญาตให้มีการกระทำที่กำหนดเองกับทรัพยากร คำถามที่ 2 ฉันใช้ส่วนการสอบถามของ URL เพื่อกรองชุดของทรัพยากรที่ส่งคืนเมื่อทำการสืบค้นคอลเลกชัน (เช่น/collection?someField=someval) ภายในตัวควบคุม …