MVC cukup mudah. Ada Model, Pengontrol dan Tampilan. Saat kami membuat situs web, semuanya datang bersamaan karena ' klien mengirimkan permintaan kata kunci REST ke server -> server mencocokkan URL yang diminta dengan tindakan pengontrol -> yang kemudian memanggil model untuk pengumpulan / pemrosesan data, dapatkan hasilnya -> dan mengembalikan hasilnya kembali ke klien sebagai halaman HTML (tampilan) '.
Bagaimana jika kita berbicara tentang layanan web API RESTful murni? Kemudian alur dengan sesuatu seperti ' klien mengirimkan permintaan kata kunci REST ke server -> server mencocokkan URL yang diminta dengan tindakan pengontrol -> yang kemudian memanggil model untuk pengumpulan / pemrosesan data, mendapatkan hasil -> dan mengembalikan hasilnya kembali ke klien di JSON '. Sama seperti sebelumnya, tetapi tidak ada 'tampilan' ... atau lebih tepatnya, JSON yang dihasilkan dapat dianggap sebagai 'tampilan'. Dalam arti tertentu, kami hanya menggunakan bagian MC dari MVC. Apakah itu yang harus dilakukan? Atau apakah ada pola lain yang lebih cocok untuk layanan API saja daripada MVC?
sumber
View adalah lapisan yang bertanggung jawab untuk menampilkan informasi yang dapat ditafsirkan oleh pengguna / klien dari aplikasi Anda (itu tidak mengatakan pengguna harus menjadi orang yang sebenarnya). JSON adalah format yang benar-benar valid untuk lapisan tampilan, komputer memahaminya.
Selama lapisan tampilan menerbitkan informasi yang dapat digunakan oleh pengguna untuk memengaruhi model dalam aplikasi Anda, tidak masalah bagaimana tampilan itu terlihat, itu masih merupakan tampilan, lapisan yang bertindak sebagai middleware antara pengguna dan sistem .
sumber
Martin Fowler mungkin, akan, tidak setuju dengan ini :
Bergerak...
OK, ini agak kusut
MVC, apa pun itu, adalah kumpulan ide untuk mengimplementasikan antarmuka pengguna.
REST adalah kumpulan kendala arsitektur untuk membangun aplikasi skala besar.
Web, yang Anda bicarakan di sini, adalah aplikasi manajemen dokumen raksasa yang dibangun menggunakan sebagian besar kendala yang sama.
Kesamaan yang Anda lihat di antara keduanya adalah (pilihlah) dikaitkan salah, atau dangkal.
RESTafarian memiliki pemahaman yang sama tentang HATEOAS , "hypertext sebagai mesin negara aplikasi", dan yang seharusnya mengirim alarm berbunyi melalui kepala Anda - mengapa pandangan menjadi mesin negara ? Jika kita mempertanyakan premis, dan mencari bukti tambahan, kita mungkin juga memperhatikan dua hal aneh.
Pertama, kita dapat mengambil server HTTP sepenuhnya dari persamaan dengan memuat HTML dari disk. Browser sangat puas dengan ini, memaafkan beberapa variasi kecil dalam perilaku yang mungkin timbul dari perubahan url dasar. Tampilan umumnya tidak terus berfungsi ketika mereka telah benar-benar terputus dari model dan pengontrol seperti itu.
Kedua, jika kita mengamati browser modern dengan cermat, kita akan melihat bahwa ada beberapa tampilan HTML. Beberapa tampilan tampilan sepertinya ide yang sangat aneh, tapi cukup pasti ada presentasi utama, dengan sekelompok markup teks yang menanggapi gerakan pengguna, dan kemudian ada hal ini "Tampilan Sumber" yang menunjukkan HTML mentah dan juga menanggapi gerakan pengguna. Ini kura-kura sepanjang jalan!
Jawaban atas teka-teki itu, tentu saja, adalah bahwa HTML bukan tampilan. Kumpulan widget di browser adalah tampilan, dan mereka berkomunikasi dengan Document Object Model , yang diinisialisasi dengan membaca HTML.
Dengan kata lain, HTML adalah representasi negara, seperti yang dijanjikan Roy T. Fielding .
Lebih tepatnya, sama seperti sebelumnya: tidak ada tampilan. JSON, seperti halnya HTML, adalah representasi dari negara, cocok untuk melintasi batas proses.
Pikirkan "DTO" atau "Pesan" dan kesimpulan Anda akan jauh lebih kecil kemungkinannya untuk menyesatkan Anda.
sumber
Melewati JSON sebagai tampilan, atau menggunakannya sebagai model tampilan untuk membangun tampilan tidak melanggar pola.
Saya menggunakan arsitektur yang sama dalam aplikasi saat ini yang sedang saya kerjakan dan itu bekerja dengan sangat baik. Bersama dengan beberapa kerangka kerja JS yang bagus, Anda dapat membuat beberapa desain yang sangat responsif.
Jujur saja, tidak tahu. Tapi saya pikir apakah Anda menggunakan MVC atau tidak di API tidak begitu penting. Gunakan apa pun yang Anda rasa nyaman. Ketika berbicara tentang layanan web, ada banyak aspek yang lebih penting untuk dipertimbangkan (yang tidak terkait langsung dengan MVC), misalnya keamanan, konsistensi, ketersediaan, dll.
sumber