Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 21930|Jawab: 1

[WebAPI] web api Definisi properti Rute

[Salin tautan]
Diposting pada 28/04/2018 10.37.11 | | | |
ASP.NET Perutean API Web, sederhananya, adalah proses memetakan permintaan klien ke Tindakan yang sesuai. Dalam artikel "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings", saya mengalami pengaturan rute melalui template, konvensi, dan metode HTTP, dan keuntungan dari pendekatan ini adalah bahwa template routing ditempatkan secara seragam di kelas WebApiConfig di bawah folder App_Start, yang nyaman untuk manajemen, tetapi kerugiannya adalah tidak cukup fleksibel.


REST memperlakukan semuanya sebagai sumber daya, dan terkadang, sumber daya dengan sumber daya turunan, seperti Pelanggan dan Pesanan, mungkin ingin memasukkan permintaan seperti pelanggan/1/pesanan, tetapi sulit untuk mencapai rute ini hanya dengan konvensi. Faktanya, ASP.NET Web API memberi kita fitur Rute, yang dapat langsung dihubungkan ke Action, yang sangat fleksibel dan intuitif untuk digunakan.

Mari kita rasakan cara menggunakan fitur Rute di ASP.NET MVC4.

Izinkan atribut Rute


Pertama, Anda perlu mengaturnya di WebApiConfig.



Metode MapHttpAttributeRoutes di atas hanya tersedia di ASP.NET versi Web API yang lebih baruJika versi Anda relatif rendah, Anda dapat menghapus versi lama dan menginstal versi terbaru melalui konsol NuGet Package Manager.


Selanjutnya, di Global.asax, Anda perlu mengomentari cara asli mendaftarkan WebApiConfig dan mengadopsi metode baru, sebagai berikut:

Saat ini, menjalankan proyek dapat melaporkan kesalahan berikut:

Ini karena saat mengunduh ASP.NET Web API versi terbaru, saya juga mengunduh icrosoft versi terbaru. AspNet.WebApi.HelpPage。 Anda dapat menghapus HelpPage versi terbaru dan mengunduh versi yang lebih lama.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Menggunakan properti Rute

Buat kelas Cusomter.


Buat kelas Urutan.

Buat kelas Database untuk mendapatkan koleksi Order.



Buat pengontrol API kosong yang ditulis seperti ini:


Ketik yang berikut ini di browser Anda:

Jika Anda menggunakan ASP.NET MVC4 untuk pengembangan, Anda mungkin mendapatkan kesalahan berikut saat program dijalankan untuk pertama kalinya:

[SEBUAH] System.Web.WebPages.Razor.Configuration.HostSection tidak dapat ditransmisikan ke [B]System.Web.WebPages.Razor.Configuration.HostSection. Tipe A berasal dari "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (dalam "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ dalam konteks "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Tipe B berasal dari "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (dalam konteks "Default" dalam "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ File ASP.NET Sementara/vs/feb7ce97/a525d58a/asse


Ini karena Razor versi terbaru digunakan saat mengunduh versi terbaru dari ASP.NET Web API. Anda perlu mengonfigurasi konfigurasi berikut di direktori root Web.config:


Gunakan fitur RoutePrefix


Jika Anda ingin mengawali semua Tindakan di pengontrol API, Anda dapat menempatkan fitur RoutePrefix pada pengontrol API.

Misalnya, kita ingin dalam format seperti ini: http://localhost/api/customers/1/orders


Ubah OrdersController dengan cara ini.


Anda juga dapat menggunakan ~ di fitur Rute untuk mengganti aturan awalan Tindakan.



Awalan yang ditentukan oleh fitur RoutePrefix juga dapat memiliki variabel parameter:


Batasan perutean

Anda dapat membatasi variabel parameter dalam rute dengan "{nama variabel parameter: batas}".


Di atas, jika id variabel fragmen berjenis int, itu dirutekan ke Tindakan pertama, dan jika tidak, itu dirutekan ke Tindakan kedua.

ASP.NET batasan bawaan API Web meliputi:

{x:alpha} membatasi huruf besar dan huruf kecil
{x:bool}
{x:tanggalwaktu}
{x:desimal}
{x:ganda}
{x:mengambang}
{x:guid}
{x:int}
{x:panjang(6)}
{x:length(1,20)} membatasi rentang panjang
{x:panjang}
{x:maxlength(10)}
{x:min(10)}
{x:rentang(10,50)}
{x:regex(regex)}


Anda dapat mengatur beberapa batasan untuk variabel parameter secara bersamaan:

Terapkan antarmuka IHttpRouteConstraint untuk menyesuaikan aturan batasan. Terapkan batasan yang tidak boleh 0.


Daftarkan batasan kustom di WebApiConfig di folder App_Start.


Gunakan batasan kustom.


Parameter opsional dan nilai defaultnya

Jika variabel parameter perutean bersifat opsional, parameter juga harus diberi nilai default.


Tambahkan ? setelah batasan untuk menunjukkan opsional, dan atur nilai default untuk id dalam parameter metode.

Menetapkan nama untuk rute



Prioritas perutean

Prioritas rute yang ditetapkan oleh properti Rute ditentukan berdasarkan konvensi dan properti RouteOrder.

Konvensinya adalah:

1. Variabel fragmen statis
2. Variabel fragmen dengan batasan
3. Variabel fragmen tanpa batasan
4. Variabel fragmen wildcard dengan batasan
5. Variabel fragmen wildcard yang tidak dibatasi

Nilai default properti RouteOrder adalah 0, dan semakin kecil nilai properti, semakin tinggi.


Di atas, urutan prioritas untuk perutean adalah:

order/detail variabel fragmen statis, nilai properti RouteOrder adalah 0
order/{id} dengan variabel fragmen terbatas dengan nilai 0 di properti RouteOrder
orders/{customerName} adalah variabel fragmen tanpa batasan, dan nilai properti RouteOrder adalah 0
orders/{*date} adalah variabel fragmen wildcard dengan nilai 0 di properti RouteOrder
order/nilai properti RouteOrder tertunda 1






Mantan:Catat apa yang dapat dibayar dengan kartu kredit
Depan:Tidak dapat menyediakan proses untuk ADO.NET dengan nama tetap "MySql.Data.MySqlClient"...
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com