Pada dasarnya, Web API
pengontrol adalah MVC
pengontrol, yang digunakan HttpMessageResponse
sebagai jenis dasar dari responsnya, bukan ActionResponse
. Mereka sama dalam banyak hal. Perbedaan utama antara tipe proyek adalah tipe MVC Application
proyek menambahkan hal-hal spesifik web seperti default CSS
, JavaScript
file dan sumber daya lain yang diperlukan untuk situs web, yang tidak diperlukan untuk API.
MVC digunakan untuk membuat situs web. Dalam hal ini Controllers
biasanya mengembalikan View
(yaitu respons HTML) ke permintaan browser. API Web di sisi lain biasanya dibuat untuk digunakan oleh aplikasi lain. Jika Anda ingin mengizinkan aplikasi lain untuk mengakses data / fungsionalitas Anda, Anda dapat membuat API Web untuk memfasilitasi akses ini. Misalnya, Facebook memiliki API untuk memungkinkan pengembang Aplikasi mengakses informasi tentang pengguna yang menggunakan Aplikasi. API Web tidak harus untuk konsumsi publik. Anda juga dapat membuat API untuk mendukung aplikasi Anda sendiri. Misalnya, kami membuat API Web untuk mendukung fungsionalitas AJAX dari situs web MVC kami.
Microsoft mengubah cara mereka menyajikan templat yang berbeda. Sekarang alih-alih menggunakan templat yang berbeda untuk jenis proyek yang berbeda, mereka mendorong pengembang untuk mencampur teknologi ASP.NET di dalam proyek yang sama sesuai kebutuhan. Microsoft menyebutnya vNext
.
UPDATE: Untuk ASP.NET Core, Web API telah diintegrasikan ke dalam jenis proyek MVC 6 dan ApiController
kelas tersebut dikonsolidasikan ke dalam Controller
kelas. Detail lebih lanjut di: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6
Dua sen saya ...
Controller
memutuskan apa yang seharusnyaView
- yaitu, pengontrol memutuskan apa yang harus "dilihat" pengguna (berdasarkan skenario atau konteks saat ini), ketika mereka membuat permintaan.ASPX
halaman memutuskan apa yang harus "dilihat" pengguna saat mereka membuat permintaan.API Web BUKAN merupakan teknologi yang terikat dengan situs web saja. Ini dapat digunakan untuk berbagai tujuan - tidak hanya situs web. Jadi tidak tahu artinya
rendering
Bacaan lebih lanjut
sumber
Pengontrol MVC berasal dari kelas pengontrol. Di Mvc Anda bisa mengembalikan tampilan. Arsitektur Mvc digunakan untuk membuat aplikasi. Namun apis Web digunakan untuk menyediakan data ke berbagai aplikasi.
Drive Web Api dari pengontrol Api dan tidak mengembalikan tampilan.
Catatan: Anda juga dapat membuat Api Web dari pengontrol MVC tetapi Anda perlu mengembalikan hasil sebagai JsonResult atau jenis pengembalian yang didukung api web lainnya.
sumber
Selain jawaban yang sudah diberikan di sini, perlu diperhatikan setiap pengontrol yang mewarisi dari ApiController dan memiliki tindakan dengan kata kerja Http POST hanya dapat memiliki satu parameter masukan [FromBody]. Jika menggunakan pengontrol MVC (berasal dari 'Controller'), Anda dapat memiliki banyak parameter input pos.
sumber