Saya merancang REST API pragmatis dan saya sedikit bingung tentang cara terbaik untuk menambahkan entitas yang ada ke koleksi. Model domain saya mencakup Proyek yang memiliki koleksi Situs. Ini adalah hubungan banyak-ke-banyak yang ketat dan saya tidak perlu membuat entitas yang secara eksplisit memodelkan hubungan (yaitu ProjectSite).
API saya akan memungkinkan konsumen untuk menambahkan Situs yang ada ke Proyek. Di mana saya menutup telepon adalah bahwa satu-satunya data yang saya butuhkan adalah ProjectId dan SiteId. Ide awal saya adalah:
1. POST myapi/projects/{projectId}/sites/{siteId}
Tapi saya juga memikirkannya
2. POST myapi/projects/{projectId}/sites
dengan entitas Situs yang dikirim sebagai konten JSON.
Opsi 1 sederhana dan berfungsi tetapi tidak terasa benar, dan saya memiliki hubungan lain yang tidak dapat mengikuti pola ini sehingga menambah ketidakkonsistenan pada API saya.
Opsi 2 terasa lebih baik tetapi mengarah ke dua masalah:
- Haruskah saya membuat Situs atau melemparkan pengecualian jika Situs baru diposting (SiteId = 0)?
- Karena saya hanya perlu ProjectId dan SiteId untuk membuat hubungan, situs dapat diposting dengan data yang salah atau hilang untuk properti lainnya.
Opsi ketiga adalah memberikan titik akhir sederhana hanya untuk membuat dan menghapus hubungan. Titik akhir ini akan mengharapkan muatan JSON yang hanya berisi ProjectId dan SiteId.
Apa yang kamu pikirkan?