RESTful API ควรแยกกันอย่างไร


12

ฉันไม่เคยสร้าง RESTful API มาก่อนและฉันสงสัยว่ามันควรแยกออกจากกันอย่างไร

ตัวอย่างเช่นสมมติว่าฉันมีลูกค้าที่มีชื่อที่อยู่หมายเลขโทรศัพท์ที่อยู่อีเมลภาษา ฯลฯ

มันสมเหตุสมผลหรือไม่ที่มีวิธีอัปเดตแต่ละฟิลด์ (อัปเดตที่อยู่อัปเดตที่อยู่อีเมล ฯลฯ ) หรือควรจะมีการอัปเดตเดียวสำหรับลูกค้าทั้งหมดและแต่ละฟิลด์เป็นฟิลด์เสริมหรือไม่


3
ส่วนไหนของ REST ที่คุณต้องการ หากคุณต้องการ API แบบง่ายที่ไม่ต้องกังวลกับมาตรฐานคุณสามารถจัดการได้เหมือนกับคำตอบที่ยอมรับของ thorsten müller ถ้าคุณต้องการ REST จริงคุณต้องค้นหา Roy Fielding (+ วิทยานิพนธ์ตัวอย่าง) เขาเป็นนักประดิษฐ์ของ REST คุณจะเห็นว่าตัวอย่างเช่นความคิดที่ว่าทรัพยากร == ตารางไม่ใช่ความจริง คุณจะพบว่าตัวอย่างสำหรับคำถามของคุณวิธี PATCH HTTP นั้นค่อนข้างบ่อยสำหรับการอัปเดตหนึ่งหรือหลายฟิลด์ สามารถใช้วิธีการ POST หรือ PUT (การอภิปรายจำนวนมากที่นี่) สำหรับการอัปเดตที่สมบูรณ์ของทรัพยากร
Luc Franken

คำตอบ:


17

คุณมีการดำเนินการอัปเดตหนึ่งรายการสำหรับทรัพยากร กฎทั่วไปง่ายๆตารางในฐานข้อมูลของคุณจะเป็นทรัพยากร ดังนั้นในตัวอย่างของคุณมีคอนโทรลเลอร์หนึ่งตัวสำหรับลูกค้าที่มีการดำเนินการอัปเดตเดียวและฟิลด์เป็นตัวเลือกเท่าที่จะทำได้

อาจมีข้อยกเว้นนี้ (ตัวอย่างเช่นหากคุณอัปเดตรหัสผ่านที่คุณคาดว่ารหัสผ่าน & password_confirmation) แต่สิ่งนี้ถือเป็นจริงสำหรับกรณีส่วนใหญ่

มีโอกาสมากที่ข้อยกเว้นเป็นตัวควบคุมที่มีการดำเนินการที่ จำกัด สำหรับทรัพยากรบางอย่างเช่น SessionsController ที่สามารถสร้างและทำลายได้เท่านั้น ไม่น่าเป็นไปได้มากที่คุณจะต้องการดำเนินการสำหรับเขตข้อมูลเดียว

ในตัวอย่างของคุณมีสิ่งหนึ่งที่สามารถจัดการเป็นทรัพยากรของตัวเองและนั่นคือที่อยู่ หากคุณมีตารางสำหรับที่อยู่โดยเฉพาะหากมีที่อยู่มากกว่าหนึ่งรายการต่อลูกค้า (การเรียกเก็บเงินการจัดส่ง ... ) สิ่งนี้สามารถจัดการเป็นทรัพยากรที่ซ้อนกันได้ แต่อีกหนึ่งการดำเนินการอัปเดตสำหรับทรัพยากรที่อยู่ทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.