Saat ini saya sedang membuat REST-API untuk sebuah proyek dan telah membaca artikel demi artikel tentang praktik terbaik. Banyak yang tampaknya menentang DTO dan hanya mengekspos model domain, sementara yang lain tampaknya berpikir DTO (atau Model Pengguna atau apa pun yang Anda ingin menyebutnya) adalah praktik yang buruk. Secara pribadi, saya pikir artikel ini masuk akal.
Namun, saya juga memahami kelemahan DTO dengan semua kode pemetaan tambahan, model domain yang mungkin 100% identik dengan mitra DTO mereka dan seterusnya.
API kami sebagian besar dibuat sehingga klien lain dapat mengkonsumsi data, namun jika kami melakukannya dengan benar, kami juga ingin menggunakannya untuk GUI web kami sendiri jika memungkinkan.
Masalahnya adalah kita mungkin tidak ingin mengekspos semua data domain ke pengguna klien lain. Sebagian besar data hanya akan masuk akal di aplikasi web kita sendiri. Selain itu, kami mungkin tidak ingin memaparkan semua data tentang suatu objek di semua skenario, terutama hubungan dengan objek lain dan seterusnya. Sebagai contoh, jika kita mengekspos daftar objek tertentu, kita tidak perlu ingin mengekspos seluruh hirarki objek; sehingga objek anak-anak tidak akan terekspos, tetapi dapat ditemukan melalui tautan (hateoas).
Bagaimana saya harus menyelesaikan masalah ini? Saya sedang berpikir tentang menggunakan Jackson mixin pada model domain kami untuk mengontrol data apa yang akan diekspos dengan skenario yang berbeda. Atau haruskah kita menggunakan DTO sepenuhnya - bahkan mengingat kekurangan dan kontroversi?