Klik jika Anda menyukai proyek ini. Permintaan Tarik sangat dihargai. Ikuti saya @kansiris87 untuk pembaruan teknis.
TIDAK. | Pertanyaan |
---|---|
1 | [Apa itu REST?](#Apa itu REST?) |
2 | [Jelaskan prinsip REST?](#Jelaskan prinsip REST?) |
3 | [Apa perbedaan antara REST dan SOAP?](#Apa perbedaan antara REST dan SOAP?) |
4 | [Apa itu ASP.NET WEB API?](#Apa itu ASP.NET WEB API?) |
5 | [Mengapa memilih ASP.NET WEB API?](#Mengapa memilih ASP.NET WEB API?) |
6 | [Apa perbedaan antara WCF dan ASP.NET WEB API dan WCF REST dan Layanan Web?](#Apa perbedaan antara WCF dan ASP.NET WEB API dan WCF REST dan Layanan Web?) |
7 | [Yang mana yang harus dipilih antara WCF dan WEB API?](#Yang mana yang harus dipilih antara WCF dan WEB API?) |
8 | [Apa perbedaan antara ASP.NET MVC dan ASP.NET WEB API?](#HApa perbedaan antara ASP.NET MVC dan ASP.NET WEB API?) |
9 | [Bisakah Anda mengembalikan tampilan dengan menggunakan metode WEB API?](#Dapatkah Anda mengembalikan tampilan dengan menggunakan metode WEB API?) |
10 | [Dapatkah Anda mengubah nama tindakan WEB API seperti ASP.NET MVC?](#Dapatkah Anda mengubah nama tindakan WEB API seperti ASP.NET MVC?) |
|1 | [Dapatkah Anda membatasi metode tindakan WEB API untuk dipanggil hanya dengan HTTP GET, POST, PUT atau DELETE?](#Dapatkah Anda membatasi metode tindakan WEB API untuk dipanggil hanya dengan HTTP GET, POST, PUT atau DELETE?)| |2 | [Bagaimana cara memanggil WEB API di ASP.NET MVC?](#Bagaimana cara memanggil WEB API di ASP.NET MVC?)| |3 | [Apa perbedaan perutean ASP.NET API dengan perutean ASP.NET MVC?](#Bagaimana perutean ASP.NET API berbeda dengan perutean ASP.NET MVC?)| |4 | [Bagaimana cara mengaktifkan Perutean Atribut di ASP.NET WEB API2?](#Bagaimana cara mengaktifkan Perutean Atribut di ASP.NET WEB API2?)| |5 | [Bagaimana cara mendefinisikan perutean atribut di ASP.NET WEB API2?](#Bagaimana cara mendefinisikan perutean atribut di ASP.NET WEB API2?)|
REST adalah singkatan dari Representational State Transfer. Ini adalah protokol untuk pertukaran data melalui lingkungan terdistribusi. REST adalah gaya arsitektur yang memperlakukan setiap layanan sebagai sumber daya dan mengakses data dengan metode protokol HTTP seperti GET, POST, PUT, dan DELETE.
Arsitektur bergaya REST terdiri dari klien dan server. Klien memulai permintaan ke server yang memproses permintaan ini dan mengembalikan tanggapan berdasarkan permintaan ini. Permintaan dan tanggapan ini dibangun berdasarkan transfer representasi sumber daya ini.
REST adalah seperangkat prinsip yang menentukan bagaimana standar Web, seperti HTTP dan URI, seharusnya digunakan. Ada lima prinsip REST penting seperti yang diberikan di bawah ini –
Sumber Daya Beralamat - Setiap sumber daya harus diidentifikasi dengan URI (pengidentifikasi unik)
Antarmuka Sederhana dan Seragam - REST didasarkan pada protokol HTTP jadi gunakan metode HTTP GET, POST, PUT dan DELETE untuk melakukan tindakan. Ini membuat REST menjadi sederhana dan seragam.
Berorientasi Representasi- Representasi sumber daya dipertukarkan. GET digunakan untuk mengembalikan representasi dan PUT, POST meneruskan representasi ke server sehingga sumber daya yang mendasarinya dapat berubah. Representasi mungkin dalam berbagai format seperti XML, JSON dll.
Berkomunikasi Tanpa Status - Aplikasi mungkin memiliki status tetapi tidak ada data sesi klien yang disimpan di server. Setiap data spesifik sesi harus disimpan dan dipelihara oleh klien dan ditransfer ke server dengan setiap permintaan sesuai kebutuhan.
Cacheable - Klien harus dapat menyimpan respons dalam cache untuk digunakan lebih lanjut.
Perbedaan antara REST dan SOAP diberikan di bawah ini: SOAP REST SOAP adalah singkatan dari Simple Object Access Protocol REST adalah singkatan dari REpresentational State Transfer. Ini adalah protokol berbasis XML yang dibangun di atas HTTP atau terkadang TCP/IP, SMTP. REST bukanlah sebuah protokol tetapi merupakan gaya arsitektur yaitu arsitektur berbasis sumber daya. SOAP memiliki spesifikasi untuk implementasi stateless dan stateful. REST sepenuhnya tidak memiliki kewarganegaraan. SOAP menerapkan format pesan sebagai XML. REST tidak menerapkan format pesan sebagai XML atau JSON. SOAP memiliki spesifikasi standar yang ditentukan. Misalnya, WS-Security adalah spesifikasi untuk mengimplementasikan keamanan. Ini tidak memiliki spesifikasi standar yang ditentukan. Pesan SOAP terdiri dari sebuah amplop yang berisi header dan isi SOAP untuk menyimpan informasi aktual yang ingin Anda kirim. REST menggunakan header bawaan HTTP (dengan berbagai jenis media) untuk membawa informasi meta dan menggunakan kata kerja GET,POST, PUT, dan DELETE untuk melakukan operasi CRUD. SOAP menggunakan antarmuka dan operasi bernama untuk mengekspos layanan Anda. REST menggunakan URI dan metode seperti (GET, PUT, POST, DELETE) untuk mengekspos sumber daya. Performanya lambat dibandingkan dengan REST. REST lebih cepat dibandingkan dengan SOAP.
ASP.NET WEB API adalah kerangka kerja untuk membangun layanan HTTP yang dapat digunakan oleh berbagai klien termasuk browser, ponsel, iPhone, dan tablet. Ini sangat mirip dengan ASP.NET MVC karena berisi fitur MVC seperti perutean, pengontrol, hasil tindakan, filter, pengikat model, wadah IOC, atau injeksi ketergantungan. Tapi itu bukan bagian dari Kerangka MVC. Ini adalah bagian dari platform inti ASP.NET dan dapat digunakan dengan MVC dan jenis aplikasi Web lainnya seperti ASP.NET WebForms. Ini juga dapat digunakan sebagai aplikasi layanan Web yang berdiri sendiri. Fitur ASP.NET WEB API 1. Mendukung Tindakan CRUD berbasis konvensi karena bekerja dengan kata kerja HTTP GET, POST, PUT dan DELETE. 2. Respons memiliki header Terima dan kode status HTTP. 3. Respons diformat oleh MediaTypeFormatter WEB API menjadi JSON, XML atau format apa pun yang ingin Anda tambahkan sebagai MediaTypeFormatter. 4. Ia dapat menerima dan menghasilkan konten yang mungkin tidak berorientasi objek seperti gambar, file PDF dll. 5. Ia memiliki dukungan otomatis untuk OData. Oleh karena itu, dengan menempatkan atribut [Queryable] baru pada metode pengontrol yang mengembalikan IQueryable, klien dapat menggunakan metode tersebut untuk komposisi kueri OData. 6. Dapat dihosting di dalam aplikasi atau di IIS. 7. Ini juga mendukung fitur MVC seperti perutean, pengontrol, hasil tindakan, filter, pengikat model, wadah IOC atau injeksi ketergantungan yang membuatnya lebih sederhana dan kuat.
Saat ini, aplikasi berbasis web saja tidak cukup untuk menjangkau pelanggannya. Orang-orang sangat pintar, mereka menggunakan perangkat iPhone, ponsel, tablet, dll dalam kehidupan sehari-hari. Perangkat ini juga memiliki banyak aplikasi untuk memudahkan hidup. Sebenarnya, kita sedang berpindah dari web menuju dunia aplikasi.
Jadi, jika Anda ingin mengekspos data layanan Anda ke browser dan semua aplikasi perangkat modern ini dengan cara yang cepat dan sederhana, Anda harus memiliki API yang kompatibel dengan browser dan semua perangkat ini.
Misalnya twitter, facebook dan Google API untuk aplikasi web dan aplikasi telepon.
WEB API adalah kerangka kerja hebat untuk mengekspos data dan layanan Anda ke berbagai perangkat yang berbeda. Selain itu WEB API adalah open source, platform ideal untuk membangun layanan REST-ful melalui .NET Framework. Tidak seperti layanan WCF Rest, layanan ini menggunakan fitur HTTP lengkap (seperti URI, header permintaan/respons, caching, pembuatan versi, berbagai format konten) dan Anda tidak perlu menentukan pengaturan konfigurasi tambahan untuk perangkat berbeda tidak seperti layanan WCF Rest.
Jika kita membutuhkan Web Service dan tidak membutuhkan SOAP, maka ASP.NET WEB API adalah pilihan terbaik.
Ini digunakan untuk membangun Layanan HTTP sederhana berbasis non-SOAP di atas saluran pesan WCF yang ada.
Itu tidak memiliki konfigurasi yang membosankan dan ekstensif seperti layanan WCF REST.
Pembuatan layanan sederhana dengan WEB API. Dengan Layanan WCF REST, pembuatan layanan menjadi sulit.
Ini hanya didasarkan pada HTTP dan mudah untuk didefinisikan, diekspos, dan dikonsumsi dengan cara yang REST-ful.
Ini adalah arsitektur yang ringan dan bagus untuk perangkat yang memiliki bandwidth terbatas seperti ponsel pintar.
Ini adalah sumber terbuka.
Kerangka .NET memiliki sejumlah teknologi yang memungkinkan Anda membuat layanan HTTP seperti Layanan Web, WCF, dan sekarang API WEB. Ada perbedaan berikut di antara keempatnya:
Layanan Web
Hal ini didasarkan pada SOAP dan mengembalikan data dalam bentuk XML.
Ini hanya mendukung protokol HTTP.
Ini bukan open source tetapi dapat digunakan oleh klien mana pun yang memahami xml.
Itu hanya dapat dihosting di IIS.
WCF
Itu juga didasarkan pada SOAP dan mengembalikan data dalam bentuk XML.
Ini adalah evolusi dari layanan web (ASMX) dan mendukung berbagai protokol seperti TCP, HTTP, HTTPS, Named Pipes, MSMQ.
Masalah utama dengan WCF adalah konfigurasinya yang membosankan dan ekstensif.
Ini bukan open source tetapi dapat digunakan oleh klien mana pun yang memahami xml.
Itu dapat dihosting di dalam aplikasi atau di IIS atau menggunakan layanan jendela.
Istirahat WCF
Untuk menggunakan WCF sebagai layanan WCF Rest Anda harus mengaktifkan webHttpBindings.
Ini mendukung kata kerja HTTP GET dan POST dengan atribut [WebGet] dan [WebInvoke] masing-masing.
Untuk mengaktifkan kata kerja HTTP lainnya, Anda harus melakukan beberapa konfigurasi di IIS untuk menerima permintaan kata kerja tertentu pada file .svc
Melewati data melalui parameter menggunakan WebGet memerlukan konfigurasi. UriTemplate harus ditentukan
Ini mendukung format data XML, JSON dan ATOM.
API WEB
Ini adalah kerangka baru untuk membangun layanan HTTP dengan cara yang mudah dan sederhana.
WEB API adalah sumber terbuka, platform ideal untuk membangun layanan REST-ful melalui .NET Framework.
Tidak seperti layanan WCF Rest, layanan ini menggunakan fitur HTTP lengkap (seperti URI, header permintaan/respons, caching, pembuatan versi, berbagai format konten)
Ini juga mendukung fitur MVC seperti perutean, pengontrol, hasil tindakan, filter, pengikat model, wadah IOC atau injeksi ketergantungan, pengujian unit yang membuatnya lebih sederhana dan kuat.
Itu dapat dihosting di dalam aplikasi atau di IIS.
Ini adalah arsitektur yang ringan dan bagus untuk perangkat yang memiliki bandwidth terbatas seperti ponsel pintar.
Respons diformat oleh MediaTypeFormatter WEB API menjadi JSON, XML, atau format apa pun yang ingin Anda tambahkan sebagai MediaTypeFormatter.
Poin-poin berikut membantu Anda memilih antara WCF dan WEB API:
Pilih WCF ketika Anda ingin membuat layanan yang mendukung skenario khusus seperti perpesanan satu arah, antrian pesan, komunikasi dupleks, dll.
Pilih WCF ketika Anda ingin membuat layanan yang dapat menggunakan saluran transport cepat jika tersedia, seperti TCP, Named Pipes, atau bahkan UDP (di WCF 4.5), dan Anda juga ingin mendukung HTTP ketika semua saluran transport lainnya tidak tersedia.
Pilih WEB API ketika Anda ingin membuat layanan berorientasi sumber daya melalui HTTP yang dapat menggunakan fitur lengkap HTTP (seperti URI, header permintaan/respons, caching, pembuatan versi, berbagai format konten).
Pilih WEB API bila Anda ingin memaparkan layanan Anda ke berbagai klien termasuk browser, ponsel, iPhone, dan tablet.
Ada perbedaan berikut antara ASP.NET MVC dan WEB API:
ASP.NET MVC digunakan untuk membuat aplikasi web yang mengembalikan tampilan dan data tetapi ASP.NET WEB API digunakan untuk membuat layanan HTTP lengkap dengan cara mudah dan sederhana yang hanya mengembalikan data, bukan tampilan.
WEB API membantu membangun layanan REST-ful melalui .NET Framework dan juga mendukung negosiasi konten (ini tentang menentukan format data respons terbaik yang dapat diterima oleh klien. bisa berupa JSON, XML, ATOM atau data berformat lainnya ), hosting mandiri yang tidak ada di MVC.
WEB API juga menangani pengembalian data dalam format tertentu seperti JSON, XML atau lainnya berdasarkan header Terima dalam permintaan dan Anda tidak perlu khawatir tentang itu. MVC hanya mengembalikan data dalam format JSON menggunakan JSONResult.
Di WEB API permintaan dipetakan ke tindakan berdasarkan kata kerja HTTP tetapi di MVC dipetakan ke nama tindakan.
ASP.NET WEB API adalah kerangka kerja baru dan bagian dari kerangka inti ASP.NET. Pengikatan model, filter, perutean, dan fitur MVC lainnya yang ada di WEB API berbeda dari MVC dan ada di rakitan System.Web.Http yang baru. Di MVC, fitur-fitur ini ada dalam System.Web.Mvc. Oleh karena itu WEB API juga dapat digunakan dengan ASP.NET dan sebagai lapisan layanan yang berdiri sendiri.
Anda dapat menggabungkan WEB API dan pengontrol MVC dalam satu proyek untuk menangani permintaan AJAX tingkat lanjut yang dapat mengembalikan data dalam format JSON, XML, atau format lainnya dan membangun layanan HTTP yang lengkap. Biasanya, ini disebut hosting mandiri WEB API.
Ketika Anda memiliki pengontrol MVC dan WEB API campuran dan Anda ingin menerapkan otorisasi maka Anda harus membuat dua filter, satu untuk MVC dan satu lagi untuk WEB API karena keduanya berbeda.
Selain itu, WEB API adalah arsitektur yang ringan dan selain aplikasi web, API ini juga dapat digunakan dengan aplikasi ponsel pintar.
Tidak seperti ASP.NET MVC, WEB API digunakan untuk mengembalikan data saja. Data dapat berupa string, JSON, XML, Teks dll. Tidak dapat mengembalikan Tampilan seperti ASP.NET MVC.
Seperti ASP.NET MVC, Anda juga dapat mengubah nama tindakan WEB API dengan menggunakan atribut ActionName seperti yang diberikan di bawah ini:
[HttpGet] [ActionName("GetProducts")] public IEnumerable ProductList() { return db.Products.AsEnumerable(); }
Seperti ASP.NET MVC, Anda juga dapat membatasi metode tindakan WEB API untuk dipanggil hanya oleh permintaan HTTP tertentu dengan menerapkan atribut HttpGet atau HttpPost atau HttpPut atau HttpDelete.
Jika Anda ingin membatasi metode tindakan hanya untuk permintaan HTTP Get, hiasi dengan atribut pemilih metode tindakan HttpGet seperti yang diberikan di bawah ini:
[HttpGet] Daftar Produk IEnumerable publik() { return db.Products.AsEnumerable(); }
ASP.NET WEB API dapat dipanggil dengan menggunakan HttpClient dan alamat WEB API seperti yang diberikan di bawah ini:
ProductController kelas publik : Pengontrol { HttpClient Client = new HttpClient(); Alamat Dasar Uri = Uri baru("http://localhost:131/"); Indeks Hasil Aksi publik() { Client.BaseAddress = BaseAddress; Respons HttpResponseMessage = Client.GetAsync("productservice/GetProducts").Hasil; if (response.IsSuccessStatusCode) { var data = respon.Content.ReadAsAsync<IEnumerable>().Result; kembali Lihat (data); } kembalikan Tampilan(); } }
ASP.NET MVC dan ASP.NET WEB API keduanya menggunakan perutean untuk memantau permintaan masuk dan setidaknya satu rute ditentukan agar dapat berfungsi. Perbedaan antara kedua perutean ini diberikan di bawah ini:
Dalam pola rute WEB API, parameter {action} bersifat opsional tetapi Anda dapat menyertakan parameter {action}. Di ASP.NET MVC, parameter {action} wajib diisi.
Metode tindakan yang ditentukan dalam pengontrol API harus memiliki atribut kata kerja tindakan HTTP (GET, POST, PUT, DELETE) atau memiliki salah satu kata kerja tindakan HTTP sebagai awalan untuk nama metode tindakan. Di ASP.NET MVC, secara default metode tindakan dapat dipanggil dengan kata kerja HTTP GET atau POST dan untuk menggunakan kata kerja HTTP lain Anda perlu mendefinisikannya sebagai atribut.
Tidak seperti ASP.NET MVC, Web API hanya dapat menerima satu tipe kompleks sebagai parameter.
Mengaktifkan perutean atribut di ASP.NET WEB API2 Anda sederhana, cukup tambahkan panggilan ke metode MapHttpAttributeRoutes() dengan metode Register() pada file WebApiConfig.cs.
public static class WebApiConfig { public static void Register(HttpConfiguration config) {//mengaktifkan perutean atribut config.MapHttpAttributeRoutes(); } }
Anda juga dapat menggabungkan perutean atribut dengan perutean berbasis konvensi.
public static class WebApiConfig { public static void Daftar(konfigurasi HttpConfiguration) {
//mengaktifkan perutean atribut config.MapHttpAttributeRoutes(); // Perutean berbasis konvensi. config.Routes.MapHttpRoute( nama: "DefaultApi",
RouteTemplate: "api/{controller}/{id}", default: baru { id = RouteParameter.Optional });
} }
Seperti ASP.NET MVC5, Anda juga dapat menentukan perutean atribut di WEB API2 pada tingkat pengontrol dan tingkat tindakan seperti yang ditunjukkan di bawah ini:
[RoutePrefix("Layanan/Pengguna")] kelas publik UserController : ApiController { //GET rute: api/Pengguna public IEnumerable Get() { return new string[] { "value1", "value2" };
}
[Rute("{id}")] //GET rute: Layanan/Pengguna/1 string publik Dapatkan(int id) { return "value"; }
[Rute("")] //Rute POST: Layanan/Pengguna/ public void Post([FromBody]nilai string) { } }
• Perutean tingkat tindakan – Anda dapat menentukan rute pada tingkat tindakan yang berlaku untuk tindakan tertentu di pengontrol.
kelas publik UserController : ApiController { //GET rute: api/User
public IEnumerable Get() { mengembalikan string baru[] { "nilai1", "nilai2" };
}
[Rute("Layanan/Pengguna/{id}")] //GET rute: Layanan/Pengguna/1 string publik Dapatkan(int id) { return "value"; } [Rute("Layanan/Pengguna/")] //Rute POST: Layanan/Pengguna/ public void Post([FromBody]nilai string) { } }