Attribute Routing di ASP.NET MVC 5

Lagi-lagi berkat pertanyaan yang diajukan oleh teman saya Grace maka saya punya bahan untuk menulis di blog ini. Pertanyaan dia tidak berhubungan langsung dengan materi tulisan ini tetapi contoh kode yang dia sampaikan ke sayalah yang justru memberikan informasi baru bagi saya tentang adanya attribute routing pada ASP.NET MVC 5.

MVC Multiple Model

Saking katroknya saya karena sempat terkena sindrom “yang penting kerjaan beres, buat apa update pengetahuan teknologi toh tidak dipakai di proyek ini” membuat saya tidak tahu kalau ASP.NET MVC mulai versi 5 sudah bisa menggunakan attribute routing yang bisa saya bilang mirip dengan yang ada di Spring MVC.

Jadi gini, kalau sebelumnya itu kita mau bikin routing di ASP.NET MVC 4 maka kita harus menulis routingnya di file RouteConfig.cs atau untuk versi lebih lama lagi di file Global.asax. Bentuknya seperti ini

Itu baru satu routing ya, nanti kalau sudah banyak akan susah nyarinya. Ini controller ini routingnya gimana ya, terpaksa harus mencari satu-satu di dalam file di atas dengan bantuan ctrl+f 😀

Bukankah jauh lebih enak saat kita buka file controller maka disitu juga kita langsung tahu routingnya lari kemana? iya kan?.

Mengaktifkan Attribute Routing

Secara default attribute routing di MVC 5 tidak dikenali, untuk mengaktifkannya tambahkan kode berikut pada file RouteConfig.cs sebelum kode default mapping.

Menggunakan Attribute Routing

Kita pakai contoh kasus untuk menggunakan attribute routing. Berikut kasusnya:

Ketika url yang diakses adalah domain/products maka yang muncul daftar semua produk.

Ketika url yang diakses adalah domain/products/cpu maka yang muncul daftar semua produk pada kategori “cpu”.

Ketika url yang diakses adalah domain/products/cpu/3 maka yang muncul daftar detail produk ber id 3 pada kategori “cpu”

Implementasinya bisa dilihat pada kode yang saya berikan di bawah ini

To the point bukan? dengan begini ketika url yang diakses domain.com/products maka yang dieksekusi adalah method GetAllProducts, method yang lain juga seperti itu.

Ngomong-ngomong, nama parameter pada method harus sama dengan nama pada routing yang bertanda kurung. Seperti terlihat pada kode di atas {category} dan {id} yang juga merupakan nama dari parameter.

Ketiga routing di atas memiliki kesamaan yakni sama-sama memiliki awalan products. Bagaimana kalau kita manfaatkan keadaan ini sehingga routing yang kita punya bisa lebih efisien, apakah bisa?.

Jawabannya adalah bisa. Perhatikan kode di bawah

Dengan seperti itu semua method pada kelas ini akan memiliki routing yang diawali dengan kata “products”.

Lhah bagaimana kalau kita ingin ada method baru pada kelas di atas tetapi routingnya tidak di awali dengan kata “products”?. Bisa bisa saja dong, perhatikan kode berikut

Method di atas akan dieksekusi dengan url domain.com/top-products. Dengan menambahkan karakter tilde (~) maka route prefix akan dihapuskan.

Constraint

Perhatikan method ini

Walaupun method di atas memiliki parameter id yang bertipe integer tetapi pengguna bisa saja memasukkan url “domain.com/products/cpu/abc” dan yang terjadi adalah error. Untuk mengatasinya kita bisa menggunakan constraint bahwa id harus integer dan jika bukan integer maka routing tidak akan ditemukan alias 404.

Penutup

Semoga tulisan ini bermanfaat dan jangan sampai terkena sindrom malas update pengetahuan teknologi walaupun tidak digunakan pada proyek yang sedang pembaca pegang sekarang 😉

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

One thought on “Attribute Routing di ASP.NET MVC 5

Leave a Reply

Your email address will not be published. Required fields are marked *