Dalam aplikasi utama REST API yang mencakup beberapa domain terkait, apakah lebih masuk akal untuk membagi sumber daya menjadi 'area' berdasarkan domain bisnis tempat mereka berada atau lebih baik mempertahankan model tunggal?
Misalnya, ada sub-domain 'Penjualan' dan 'Persediaan'. Pengguna sistem biasanya hanya peduli pada satu domain saja, tetapi pengecualian dimungkinkan. Ada konsep 'Item' yang ada di kedua domain sehingga kami dapat mengimplementasikan sumber daya 'item' dengan dua cara berbeda.
memiliki sumber daya yang berbeda untuk mewakili konsep di setiap domain, setiap sumber daya hanya memegang data yang relevan:
/ sales / items /: id
/ inventaris / item /: id
memiliki sumber daya tunggal dengan semua data yang akan digunakan dalam semua konteks:
/ items /: id
Ada juga banyak sumber daya yang hanya dimiliki oleh salah satu domain.
pro 'daerah'
- lebih mudah untuk memahami API untuk pengguna yang hanya peduli pada satu domain
- lebih mudah untuk mengimplementasikan sumber daya (lebih sedikit barang untuk dibaca / diperbarui sekaligus)
- sumber daya dapat lebih khusus / dioptimalkan untuk setiap domain tertentu
- kemampuan untuk mengontrol akses ke sumber daya di tingkat yang lebih terperinci
pro dari satu model tunggal
- tidak ada sumber rangkap untuk konsep yang dimiliki lebih dari satu domain
- jika pengguna perlu bekerja dengan banyak domain, ia hanya perlu menggunakan API tunggal yang mencakup semua kebutuhannya
Apakah pemartisian API seperti yang dijelaskan di atas merupakan cara yang valid untuk mengurangi kompleksitas kontrak dan implementasi API? Saya belum melihatnya disebutkan di mana pun.
Apakah ada hal lain yang perlu dipertimbangkan untuk membuat keputusan yang mendukung kedua pendekatan tersebut?
sumber
Saya pikir aturannya adalah sebagai berikut.
Jika suatu item itu sendiri tidak terpikirkan tanpa terkait dengan penjualan atau inventaris, Anda harus memilih opsi 1.
Jika suatu barang bisa ada tanpa ada kaitannya dengan penjualan / inventaris atau hubungan ini tidak terlalu kuat dalam arsitektur Anda, Anda bisa memilih opsi 2.
sumber