HTTP Lifecycle Adonis

Ahmad Arif
AdonisID
Published in
3 min readFeb 18, 2018
Source from Adi Rahman (http://www.ceritadikit.com)

Kali ini saya akan membahas mengenai HTTP Lifecycle Adonis. Adonis merupakan web framework, yang pastinya menangani protokol HTTP. Berikut adalah diagram alir tentang bagaimana aliran HTTP Request di Adonis bekerja:

Alur HTTP Request Adonis

Terdapat 2 proses yang melakukan pengecekan terhadap request yang diterima, yaitu:

  • Server Level Middleware

Fungsi utama dari Server Level Middleware adalah untuk menyajikan file statis yang berada di folder/direktori public. URL yang direquest ke server akan terlebih dahulu dicek oleh Server Level Middleware untuk mengecek apakah terdapat file yang pathnya sesuai dengan URL tersebut atau tidak, tidak terdapat file yang pathnya sesuai dengan URL maka response yang dikirim adalah file tersebut.

Sebagai contoh, silahkan akses url http://localhost:3333/pyramid.png dimana pyramid.png merupakan nama file yang berada di folder public. Maka hasilnya adalah sebagai berikut:

Respon ketika mengakses http://localhost:3333/pyramid.png
  • Route Middleware

Bagian ini dieksekusi ketika Server Level Middleware tidak dapat menemukan file yang cocok dengan Request URL yang dikirim. Route Middlware bertugas untuk mencocokkan request dengan daftar route/URL yang sebelumnya sudah didaftarkan di file start/routes.js. Jika tidak menemukan route yang cocok, maka Adonis akan melempar 404 exception. Sebagai contoh, silahkan akses http://localhost:3333/halo, maka kamu akan mendapatkan response seperti berikut:

404 exception

Jika route ditemukan maka Adonis akan melanjutkan request tersebut ke Global Middleware, Named Middleware, dan route handler yang sesuai dengan URL requestnya. Setelah ini HTTP Request diserahkan sepenuhnya ke route yang menangani (sesuai) request tersebut (bisa mengirimkan file statis lain, mengirimkan file json, ataupun merender view HTML).

Note: Topik middleware dibahas di artikel lain.

Node.js sendiri memiliki modul HTTP untuk mengelola http request, dimana di dalamnya terdapat object req dan res. req merupakan argumen yang merepresentasikan request dari client, yang juga merupakan objek dari http.IncomingMessage. Kemudian untuk res sendiri merupakan parameter kedua setelah req, yaitu sebuah hasil yang dikirim dari server (response), yang juga merupakan objek dari http.ServerResponse. Adonis membungkus kedua objek tersebut ke dalam satu objek dari kelas Context, sehingga ketika mendaftarkannya ke dalam route kamu dapat menggunakan objek tersebut untuk mengambil informasi request dan mengatur response yang akan dikirim dari server.

Ketika ada request yang cocok dengan daftar route, maka akan terbentuk sebuah objek context yang unik yang menangani setiap request yang cocok dengan URLnya. Berikut contoh kode penggunaan context dalam routing:

Route.get('/', (ctx) => {
// ctx.request
// ctx.response
})

Atau kamu dapat menggunakan fitur destruktur ES6 sebagai berikut:

Route.get('/', ({ request, response }) => {
// request
// response
})

Objek context tidak hanya memiliki 2 objek request dan response saja, namun memiliki beberapa objek di dalamnya, seperti: auth, view, dan lain-lain.

Sekian pembahasan singkat mengenai HTTP Lifecycle Adonis 😄

Jangan lupa untuk join Adonis Indonesia di channel berikut:

--

--