ตัวอย่างเช่นฉันมีเอนทิตี: ลูกค้า, รายงาน ลูกค้าอาจมีหลายรายงานและฉันคิดว่าจุดสิ้นสุดสำหรับการจัดการรายงานเดียวควรซ้อนกันเช่นนี้
/clients/{client_id}/reports/{report_id}
สำหรับรายงานทั้งหมดของลูกค้าหนึ่งรายคาดว่าจะเป็น enpoint:
/clients/{client_id}/reports
แต่ควรมองหาจุดสิ้นสุดเพื่อให้ได้รับรายงานทั้งหมดของลูกค้าทั้งหมดเพื่อให้ API มีความสอดคล้องและได้รับการออกแบบมาเป็นอย่างดี
แนวทางของฉัน:
- (ฉันเห็นมันในบาง google api) ใช้ "-" แทนและแยกเป็น "ทั้งหมด":
/clients/-/reports
สิ่งนี้คงรูปแบบจุดปลายเหมือนกัน แต่ดูผิดปกติเล็กน้อยไม่พบ rfc ใด ๆ ที่แนะนำวิธีนี้
- สร้างจุดปลายแยกเฉพาะสำหรับรายงานทั้งหมด:
/reports
แต่เพื่อรับรายงานลูกค้าก็ยัง:
/clients/{client_id}/reports
- Refactor endpoints เพื่อทำให้ "client" ไม่ใช่ parent แต่เป็นเพียงพารามิเตอร์ตัวกรอง:
/reports?client={client_id}
- รายงานลูกค้าหนึ่งราย
/reports
- รายงานของลูกค้าทั้งหมด
ในกรณีของการเพิ่มจุดปลายใหม่สำหรับการโพสต์รายงานสำหรับลูกค้าที่เฉพาะเจาะจงมันอาจดูน่าเกลียดเพราะมันจะเป็นคำขอ POST กับพารามิเตอร์ใน URL
มีคำแนะนำอื่น ๆ เกี่ยวกับความคิดหรือไม่?