waktu tersisa untuk klaim Potongan harga Rp 300.000 dalam program Membership. Klaim Promo!
Lebih terarah belajar coding melalui Kelas Online dan Interactive Coding Lihat Materi Belajar

Memahami Istilah Router Pada Web Development dan Implementasinya

Ditulis oleh Oriza Sahputra, dipublikasi pada 20 Jul 2016 dalam kategori What Is?
Memahami Istilah Router Pada Web Development dan Implementasinya - CodePolitan.com

Apa itu Router

Hampir setiap framework modern mempunyai fitur router. Kalau kita terjemahkan, istilah router merupakan suatu rute/jalan/trayek. Dalam dunia web development, trayek/jalan yang dimaksud adalah jalan menuju sebuah aplikasi berbasis web, jadi bisa kita sebut, router merupakan suatu modul dalam aplikasi yang berfungsi untuk mengatur jalan/rute pada aplikasi berbasis web.

Router mengatur pintu masuk yang berupa request pada aplikasi, mereka memilah dan mengolah request url untuk kemudian diproses sesuai dengan tujuan akhir url tersebut. Bisa jadi url tersebut berfungsi untuk mengambil data kemudian menampilkannya, menghapus data, menampilkan form, sampai mengolah session.

Contoh HTTP Request

Modul router biasanya mengimplementasikan standard http. Artinya apa? router juga memilah request berdasarkan http method. Mana request url yang methodnya GET dan mana yang methodnya POST (juga http method lain seperti DELETE, PUT, PATCH). Modul router sudah memetakan masing-masing method tersebut. Kita tidak bisa request data bermethod POST ke url yang bermethod GET dan sebaliknya.

Baca juga: Berkenalan dengan Object [Relational | Document | Graph] Mapper

Mengapa harus menggunakan Router?

Mungkin diantara teman-teman ada yang berpikir, tanpa implementasi konsep router pun kita dapat membuat sebuah aplikasi. Ya! betul sekali, memang nyatanya seperti itu. Masih banyak aplikasi yang tidak pakai konsep router, dan mengandalkan rute langsung ke path file (saya ambil contoh PHP) :

http://domain/product.php
http://domain/checkout.php?id=1
http://domain/page.php?slug=about-us

Tetap berjalan dan menghasilkan uang, namun implementasi seperti ini adalah cara lama yang kurang elegan. Kita akan kesulitan menangani url yang SEO friendly dengan segment yang dalam.

Bagaimana jika kita ingin mempunyai url seperti ini:

http://domain/product/category/id/1

Atau mungkin mempunyai segment lebih dalam lagi dengan parameter di tengah seperti ini:

http://domain/dashboard/post/type/{id}/edit

Dan bagaimana jika ingin menerapkan aturan REST, dengan masing-masing url hanya menangani http method tertentu seperti ini :

http://domain/user/register (hanya menerima POST)
http://domain/user/{username} (hanya menerima GET)

Tentunya akan sulit jika tidak menerapkan konsep router.

Perlu kita ketahui, url yang dibangun diatas mesin router dapat menghasilkan url yang lebih bersih dan dapat memperjelas pembagian resources, dapat menangani segment yang dalam. Semua rute dalam aplikasi juga dapat terdokumentasi dengan rapih, bahkan biasanya pada suatu framework, cukup dengan melihat satu file konfigurasi, kita dapat mengetahui semua rute yang ada dalam suatu aplikasi.

Melihat Implementasi Router

Jika teman-teman adalah pengguna PHP, banyak library yang dapat kita gunakan untuk mengimplementasikan mesin router. Seperti misalnya Fastroute, Klein, Alto Router, dll. Mari kita lihat potongan kode implementasi router pada PHP berikut ini :

Pada contoh diatas saya menggunakan library Klein buatan Chris O'Hara. Perhatikan baris 5 dan 9, disitulah rute didefinisikan, pada baris 5 kita mendefinisikan jika url yang diakses adalah domain.com/hello, maka akan keluar output "Hello World!", begitu juga barus ke 9, jika url yang diakses adalah domain.com/about-us, maka akan keluar output "About Us!" . Lalu perhatikan juga method yang kita ditulis, parameter pertama pada metode 5 dan 9 adalah "GET", artinya mereka hanya merespon suatu request yang berjenis "GET" saja. Rapih bukan?

Teman-teman juga dapat menyisipkan kode lain, seperti query ke database, redirect, atau mengembalikan nilai suatu fungsi pada setiap route. Perlu digarisbawahi, penggunaan dan implementasi mesin router tidak harus dibarengi dengan arsitektur kode MVC. Jika teman-teman ingin membangun aplikasi sederhana dan tidak menggunakan framework (pihak ketiga) manapun, implementasi router sangat bisa dilakukan diatas codebase (atau framework) yang teman-teman bangun.

Teman-teman juga sangat bisa membuat mesin router sederhana bikinan sendiri jika ingin belajar . Tutorialnya sudah banyak tersebar di internet. Salah satunya pada video berikut ini https://www.youtube.com/watch?v=6reEBParHzQ

Standar Router dan REST

Sebenarnya saya tidak menemukan sumber pembahasan mengenai standar sebuah router. Saya hanya dapat melihat modul router pada framework modern dan populer seperti Rails, Laravel, atau Express. Mereka semua menerapkan router dengan dukungan http verb, artinya dapat kita katakan siap untuk mengimplementasikan arsitektur REST. Setiap endpoint route dapat diatur untuk menangani http method tertentu. Namun ada pula opsi pengaturan untuk menangani semua http method pada satu url.

Baca juga: Mengenal RESTful Web Services

Bisa kita lihat contoh berikut :

Pengaturan route di Rails

Rails.application.routes.draw do
  get "/hello" => "posts#hello"
end

Pengaturan route di Laravel

Route::get('/hello', '[email protected]'); // Contoh 1
Route::get('hello', function () { // Contoh 2
    return 'Hello World';
});

Pengaturan route di Express

app.get('/hello', function (req, res) {
  res.send('hello');
});

Ketiga contoh implementasi tersebut penggunaannya mirip. Pengaturan route dilakukan dengan implementasi closure. Parameter pertama berupa rute yang dimaksud (uri) dan parameter kedua adalah sebuah callback.

Penutup

Demikian penjelasan singkat saya mengenai router. Istilah router ini akan sering teman-teman dengar jika baru memulai belajar suatu framework. Router seperti komponen wajib dalam suatu framework berbasis web dalam berbagai bahasa pemrograman.

Mohon koreksi jika ada kesalahan dan silahkan isi kolom komentar untuk menambahkan, semoga bermanfaat!

Referensi : https://framework.zend.com/manual/2.4/en/in-depth-guide/understanding-routing.html http://programmers.stackexchange.com/questions/122190/with-php-frameworks-why-is-the-route-concept-used


background

Gabung CodePolitan Membership

Ingin belajar coding secara online dengan lebih terarah? Gabung sekarang dalam program Premium Membership di CodePolitan. Dapatkan ratusan modul belajar pemrograman premium dalam beragam format dengan materi silabus lengkap dan tersusun rapi dari awal hingga mahir.

LIHAT MATERI BELAJAR GABUNG MEMBERSHIP