Middleware Auth Retrofit MVP Patern

MVP atau Model View Presenter adalah salah satu patern atau pola development yang cukup banyak dipakai dalam proses development android apps selain MVVM. MVP adalah pola development yang memisahkan antara View (activity, fragment, service, dialog dll) dengan Presenter (Logika) melalui Contract sehingga akan membuat kode lebih mudah dimaintenance dan lebih test-able. Saya akan membahasnya di artikel lain.

Kali ini saya hanya ingin membagikan pengalaman saya membuatkan middleware authentication melalui http interceptor di retrofitnya melalui callback. Diharapkan ketika dibuatkan middleware di interceptornya akan mengurangi penggunaan kode redudant yang digunakan untuk menghandle authentikasi di setiap request ke API yang menggunakan access token.

Buat sebuah bernama interface LogoutListener yang akan digunakan sebagai callback.

Tambahkan sebuah interface OnLogoutListener yang tadi kita buat sebagai parameter method create seperti contoh yang ada dibawah ini.

Tambahkan sebuah interceptor di retrofit-nya dengan tambahkan bearer token di header-nya. Kemudian handle juga di response-nya jadi ketika response code-nya 401 atau ketika tokennya kosong maka tambahkan listener onLogout dipanggil.

Setelah itu kita akses callback lah dari presenter, disini kita bisa handle sesuai dengan keinginan kita seperti menampilkan dialog token expired atau lempar langsung ke activity login.

private val api: ApiInterface = ApiInterface.create(context, object: OnLogoutListener{
override fun logout() {
view.onLogout()
}
})

Kesimpulan

Dengan menambahkan middleware dapat menghindari kode redudant ketika hit api masing-masing endpoint API. Penggunaannya sangat mudah hanya menambahkan sebuah callback di interceptor retrofit-nya.

Semoga artikel ini bermanfaat bagi kalian.

--

--

Fullstack Mobile Developer | IoT Enthusiast | LamonganDev | https://sukowidodo.com

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store