การใช้งาน PUT ที่เหมาะสมและ ObjectID ใน MongoDB

ฉันต้องการใช้ ObjectID ของ MongoDB เพื่อระบุทรัพยากรในการเรียก RESTful อย่างไรก็ตาม ฉันมีปัญหาในการหาวิธีจัดโครงสร้างการโทร PUT อย่างเหมาะสม

ตามที่ฉันเข้าใจ เส้นทางการเรียก PUT ที่เหมาะสมควรมี ID ของทรัพยากรที่จะแก้ไข หากมีทรัพยากรที่มี ID นั้นอยู่ ทรัพยากรนั้นจะถูกแก้ไข หากไม่มีอยู่ก็จะถูกสร้างขึ้น กรณีหลังนี้เป็นกรณีที่ฉันมีปัญหา: ไคลเอ็นต์ที่ส่งคำขอ PUT ไม่ทราบ ID ที่ MongoDB จะสร้าง ดังนั้นจึงไม่สามารถใช้ ID เป็นส่วนหนึ่งของคำขอได้

ฉันคิดว่านี่เป็นสถานการณ์ที่ค่อนข้างปกติเมื่อใช้คีย์ที่สร้างขึ้นอัตโนมัติเป็นรหัสทรัพยากร แต่ฉันไม่พบคำอธิบายเกี่ยวกับวิธีการจัดการกับมันอย่างถูกต้อง ฉันสามารถละทิ้งแนวคิดในการใช้ ObjectID และใช้ค่าอื่นในเอกสารได้ แต่นั่นใช้ไม่ได้กับคอลเลกชันบางประเภท คนอื่นทำอย่างไร?


person Jorge Aranda    schedule 10.05.2013    source แหล่งที่มา


คำตอบ (2)


RFC สำหรับ HTTP/1.1 ระบุว่าเซิร์ฟเวอร์สามารถ สร้างทรัพยากรใหม่หากมีการกำหนด URI เพื่อใช้ในลักษณะนั้น

ดังนั้นหากคุณสร้างทรัพยากรใหม่โดยเช่น เมื่อโพสต์ไปที่ URI ของคอลเลกชัน คุณสามารถส่งคืนการตอบกลับข้อผิดพลาดสำหรับ PUT ด้วยรหัสที่ไม่รู้จักได้

person Thomas Fenzl    schedule 10.05.2013
comment
จนถึงขณะนี้คำตอบทั้งสองโดยพื้นฐานแล้วเหมือนกัน แต่ฉันทำเครื่องหมายคำตอบนี้ว่าถูกต้องเนื่องจากมีลิงก์ไปยัง RFC ขอบคุณ! - person Jorge Aranda; 11.05.2013

"ถ้าไม่มีทรัพยากรก็จะถูกสร้างขึ้น" ไม่จำเป็นต้อง IMHO สิ่งนี้ดีคือทรัพยากรถูกระบุด้วยชื่อแทนที่จะเป็นรหัสเช่น Amazon S3 ดังนั้นในกรณีของคุณ PUT มีไว้สำหรับการแก้ไขเท่านั้น ในการสร้าง POST จะต้องใช้

person Emii Khaos    schedule 10.05.2013