blog / kotlin · July 31, 2021

Penggunaan NetworkKG pada Android menggunakan Kotlin

Pada kesempatan kali ini kita akan sama-sama mempelajari seputar Rest API pada pemrograman android dan menggunakan pustaka NetworkKG sebagai antara muka dalam mengakses HTTP API. Kita mulai pelajari secara perlahan-lahan dan bertahap.

Apa itu REST API?

REST API adalah salah satu teknologi API yang sering kita gunakan ketika akan mengembangkan sebuah Web APIs.

REST API sendiri bersifat stateless. Dimana setiap kali request harus menyertakan semua data dan parameter dengan lengkap ketika mengakses suatu endpoint.
Pada arsitektur REST, REST server menyediakan resources (sumber daya/data) dan REST client mengakses dan menampilkan resource tersebut untuk penggunaan selanjutnya. Setiap resource diidentifikasi oleh URIs (Universal Resource Identifiers) atau global ID. Resource tersebut direpresentasikan dalam bentuk format teks, JSON atau XML. Pada umumnya formatnya menggunakan JSON dan XML.

Apa itu NetworkKG?

NetworkKG merupakan pustaka type-safe HTTP Client untuk Android, dan Kotlin. Pustaka ini bertujuan untuk merubah bentuk REST API menjadi bentuk interface dalam Kotlin agar kita dapat lebih mudah dalam mengkonsumsi REST API (berperan sebagai REST client) lewat kode aplikasi untuk kebutuhan transaksi data. NetworkKG menggunakan pustaka HttpClient-KG sebagai “mesin” untuk dapat berjalan.

Instalasi dan Konfigurasi NetworkKG

Untuk dapat menggunakan NetworkKG di project yang tengah kita kembangkan hal pertama yang harus di lakukan adalah menambahkan dependency networkkg pada Gradle Scripts, tambahkan kode berikut ini :

allprojects {
   repositories {
      ...
      maven { url 'https://jitpack.io' }
   }
}
dependencies {
   implementation 'com.github.KutuGondrong:network-kg:<<latest-version>>'
   implementation 'com.github.KutuGondrong:jsonkgadapter-kg:<<latest-version>>'
}

Membuat Class Model

Berikut adalah contoh data rest api

[
   {
      "userId": 1,
      "name" : "Kutu Gondrong"
   }
]

Data dari REST API dengan struktur JSON di atas kita akan merubahnya menjadi data class di Kotlin dengan mengikuti struktur pada data JSON tersebut, berikut contoh classnya :

data class UserResponse (
   val userId: Int ,
   val name: String
)

Sekarang kita sudah memiliki komponen model yang di butuhkan oleh networkkg berupa data class pada Kotlin yang bersumber dari REST API dan memiliki struktur data yang sama.

Membuat Komponen DAO

Langkah berikutnya adalah membuat antar muka (Interface) untuk komponen DAO sesuai dengan yang di butuhkan oleh NetworkKg, untuk full dokumentasinya bisa di baca disini.

berikut adalah syntax sederhananya :

interface UserService {
    @ReturnTypeKG(UserResponse::class, true)
    @Network(NetworkType.GET, "/users")
    suspend fun getUsers() : CallbackKG<List<UserResponse>>?
}
val service = NetworkKG.dslNetworkKG{
        httpClient = HttpClientKG.dslDefaultHttpClient {
            baseUrl = BuildConfig.SERVER_BASE_URL
            properties {
                property {
                    key = "Authorization"
                    value = "Client-ID ${BuildConfig.API_KEY}"
                }
            }
        }
        //See below the json adapter converter that can be used
        converterAdapter = JsonKGAdapter.create()
        isDebug = true
    }.createService<UserService>()
    
val response = service.getUsers()