Pahami Bagaimana Retrofit bekerja

date 11 Nov 2021
date Fathurrahman
date 30
date Mobile App
Pahami Bagaimana Retrofit bekerja

Jaringan adalah salah satu bagian terpenting dari aplikasi Android. Pada tahap awal, kami menulis kelas HTTP kami sendiri untuk menangani jaringan . Seiring berjalannya waktu pembangunan semakin mudah membuat kita bergantung pada perpustakaan . Kami menggunakan banyak perpustakaan untuk mendapatkan pekerjaan yang dilakukan lebih cepat tetapi kebanyakan dari kita tidak menganalisis nya keterbatasan dan kelemahan .Sebelum menggunakan perpustakaan apa pun, kita perlu menganalisis tiga hal: ApaMengapa dan Bagaimana.Salah satu library populer yang kami gunakan untuk Networking adalah Retrofit . Dalam posting ini, mari kita menganalisis hal-hal ini dan memahami bagaimana permintaan diproses di dalam Retrofit.

Apa

Retrofit adalah klien HTTP tipe-safe untuk Android dan Java.

Mengapa

Menggunakan Retrofit membuat jaringan lebih mudah di aplikasi Android. Karena memiliki banyak fitur seperti mudah untuk menambahkan tajuk khusus dan jenis permintaan, unggahan file, tanggapan mengejek, dll di mana kami dapat mengurangi kode boilerplate di aplikasi kami dan menggunakan layanan web dengan mudah.

Bagaimana

Untuk bekerja dengan Retrofit pada dasarnya kita membutuhkan tiga kelas berikut:

  • Kelas model yang digunakan sebagai model JSON
  • Antarmuka yang mendefinisikan operasi HTTP perlu dilakukan
  • Kelas Retrofit.Builder: Instance yang menggunakan antarmuka yang ditentukan di atas dan Builder API untuk memungkinkan penentuan titik akhir URL untuk operasi HTTP . Ini juga membutuhkan konverter yang kami sediakan untuk memformat Response .

 

Refleksi

Retrofit memanfaatkan pantulan untuk menyelesaikan pekerjaan. Dalam bahasa pemrograman berorientasi objek seperti Java, refleksi menyediakan fleksibilitas untuk pengembang memeriksa dengan kelas , interface , bidang dan metode di runtime tanpa mengetahui nama-nama interface, bidang, metode di kompilasi waktu. Dalam batas keamanan yang diberlakukan oleh Java (penggunaan publik, dilindungi, pribadi), Anda kemudian dapat membangun objek, bidang akses, dan memanggil metode secara dinamis. API Refleksi Java tersedia dari paket java.lang.reflect , yang disertakan di dalamAndroid SDK untuk digunakan oleh pengembang. Proxy dan InvocationHandler adalah kelas dari paket java.lang.reflect .

Proksi

Proxy adalah pola desain . Kami membuat dan menggunakan objek proxy ketika kami ingin menambahkan atau memodifikasi beberapa fungsionalitas dari kelas yang sudah ada. Objek proxy digunakan sebagai pengganti yang asli. Biasanya, objek proxy memiliki metode yang sama dengan yang asli dan di kelas proxy Java biasanya, memperluas kelas asli. Proksi memiliki pegangan ke objek asli dan dapat memanggil metode itu. Ini adalah topik lanjutan karena mungkin memerlukan penggunaan kelas refleksi , atau manipulasi bytecode atau kompilasi kode Java yang dihasilkan secara dinamis atau semuanya.

Saat instance antarmuka API dibuat menggunakan Retrofit, instance yang dikembalikan dari retrofit sebenarnya adalah kelas proxy , implementasi dinamis antarmuka saat runtime .

Proxy dinamis memungkinkan satu tunggal kelas dengan satu tunggal metode untuk layanan beberapa metode panggilan untuk sewenang-wenang kelas dengan sewenang-wenang jumlah dari metode . Sebuah proxy dinamis dapat dianggap sebagai semacam Fasad , tetapi salah satu yang dapat berpura-pura menjadi implementasi dari antarmuka apapun . Di bawah penutup, itu merutekan semua pemanggilan metode ke satu handler - metode panggilan () .

Proxy dinamis dapat berguna untuk penulis tingkat perpustakaan atau kerangka kerja. Ini juga dapat digunakan dalam kasus di mana implementasi kelas konkret tidak akan diketahui sampai run-time .

 

 

Aliran data

Mari kita lihat aliran data dari contoh di atas seperti layanan API dengan Moshi digunakan sebagai Konverter dan Okio sebagai mediator

Pada gambar di atas, kita dapat melihat bahwa OkHttp berada di bawah Retrofit . OkHttp terhubung ke Socket untuk membuat permintaan HTTP . Dan ia memiliki jenis ini dari perpustakaan Okio yang disebut BufferSink dan BufferedSource yang dapat kita anggap sebagai aliran input dan aliran output. Jenis yang berada di antara Retrofit dan Okhttp adalah RequestBody dan ResponseBody . Dan kami memiliki konverter untuk konversi, di sini kami melihat konverter Moshi . Karena Moshi dan Okio berasal dari Squarekedua perpustakaan ini dapat berinteraksi satu sama lain. Di bagian Moshi Converter dari gambar di atas, kita bisa melihatnya. Dan ini sangat penting karena kita dapat menghindari banyak abstraksi yang berada di antara lapisan yang berbeda. The konverter berbicara RequestBody dan ResponseBody dengan Retrofit . Bagian APIService berada di atas yang implementasinya dihasilkan seperti yang dibahas di atas menggunakan proxy dinamis dan InvocationHandler .

Ketika kita memanggil titik akhir Retrofit kita mengambil Object yang kita serahkan dan itu membuat semua jalan ke konverter . Ketika konverter mengambil Objek itu karena mereka ingin mengirimkannya ke server. Moshi akan mengambil Object itu dan menulisnya ke BufferSink yang akan dibungkus dalam RequestBody dan itu adalah jenis yang sama yang Retrofit berikan ke OkHttp dan hal yang sama yang diteruskan ke soket oleh BufferSink .

Dan sama dengan cara membaca hal-hal dari sockSocketet, OkHttp akan membungkusnya ke dalam tipe Okio dan selanjutnya membungkusnya ke dalam ResponseBody. Dan konverter diberikan ResponseBody secara langsung karena Moshi tahu cara berbicara dengan tipe Okio. Ini mengambil data dari tipe BufferSouce dan kemudian konverter mengubahnya menjadi Model Data yang diperlukan untuk Aplikasi.

Itu saja untuk saat ini, semoga Anda menikmati membaca artikel ini. Silakan bagikan dengan teman-teman Anda jika Anda merasa bermanfaat.

fathur.png

Fathurrahman

Android Mobile

Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal

Artikel Terkait

Halo, ada yang bisa kami bantu?