mengapa menggunakan Retrofit saat kita memiliki OkHttp

107

dengan OkHttp kita dapat membuat request HTTP kemudian mendapatkan respon dari server

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

kemudian dengan Gson lib convert respon ke objek yang kita butuhkan.

ini dari dokumen Square / OkHttp:

API permintaan / tanggapannya dirancang dengan pembuat yang lancar dan kekekalan. Ini mendukung panggilan pemblokiran sinkron dan panggilan asinkron dengan callback

Saya membaca dari stackOverFlow

Retrofit menggunakan OkHTTP secara otomatis jika tersedia

.

Jadi pertanyaan saya adalah untuk apa Retrofit sebenarnya?

Retrofit apa yang bisa melakukan itu OkHttp tidak bisa ?!

Saya pikir OkHttp dan Gson menyelesaikan masalah API permintaan, jadi masalah apa yang dipecahkan oleh Retrofit untuk kita?

Mehrdad Faraji
sumber
2
Berbasis opini dan dengan demikian kemungkinan besar akan ditutup begitu saja. Faktanya adalah, keduanya ada dan tidak ada yang mati. Artinya, keduanya memiliki kasus penggunaan yang valid di mata komunitas pengembang Android.
fge
1
Lihat posting ini stackoverflow.com/q/16902716/1144203
ivan.sim
@isim Saya melihat tautan ini sebelumnya, tetapi saya tidak mengerti mengapa perlu Retrofit ?! dan mengapa Retrofit menggunakan OkHttp!
Mehrdad Faraji
@MehrdadFaraji Anda tidak perlu Retrofit jika OkHttp dapat melakukan apa yang Anda inginkan. Mengapa Retrofit menggunakan OkHttp Beberapa hal seperti mengaktifkan Callpola OkHttp, pencegat OkHttp, penyematan sertifikat, dll.
ivan.sim
menggunakan retrofit dengan rxjava telah menjadi praktik industri yang umum, yang merupakan alasan lain untuk menggunakan retrofit
paul_hundal

Jawaban:

95

Dengan OkHttp kita dapat membuat request HTTP kemudian mendapatkan respon dari server ... kemudian dengan Gson lib convert respon ke objek yang kita butuhkan

Perhatikan bahwa dalam cuplikan kode, Anda melewatkan dua langkah penting: membuat URL dan benar-benar mengurai JSON menggunakan Gson.

Jadi pertanyaan saya adalah untuk apa Retrofit sebenarnya?

Ini untuk menghasilkan URL (menggunakan kode yang dibuat berdasarkan tipe yang terkait dengan REST API spesifik Anda) dan benar-benar mengurai JSON menggunakan Gson. Dengan kata lain, ia melakukan apa yang Anda lewati di cuplikan kode Anda.

Selain itu, untuk jenis operasi REST tertentu (misalnya, POST), ada baiknya sedikit menyusun apa yang harus dikirim (misalnya, menghasilkan formulir yang dikodekan).

Menurut definisi, Anda tidak perlu menggunakan Retrofit. Retrofit adalah kode komputer, yang ditulis oleh pemrogram komputer. Orang lain dapat menulis kode untuk melakukan apa yang dilakukan Retrofit.

mengapa Retrofit menggunakan OkHttp

Retrofit perlu melakukan operasi HTTP. Ia menggunakan OkHttp jika tersedia, untuk semua yang disediakan OkHttp: dukungan HTTP / 2 dan SPDY, pencegat yang dapat dicolokkan, dll.

CommonsWare
sumber
32

Anda harus menggunakan retrofit jika Anda mencoba memetakan API server Anda di dalam aplikasi Anda (pengamanan tipe). Retrofit hanyalah adaptor API yang dibungkus okHTTP.

Jika Anda ingin mengetik safe dan memodulisasi kode interaksi dengan API Anda, gunakan retrofit. Selain itu, kinerja yang mendasari, permintaan default, dll dari okHTTP dan Retrofit adalah sama.

Juga saya akan merekomendasikan mendengarkan podcast ini dari Jesse Wilson (pengembang klien HTTP android utama), di mana dia berbicara secara mendalam tentang sejarah pengembangan klien HTTP Apache, HTTPURLConnection, okHTTP dan Retrofit.

geekoraul
sumber
23

Retrofit vs. OkHttp Alasannya sederhana : OkHttp adalah klien HTTP / SPDY murni yang bertanggung jawab atas semua operasi jaringan tingkat rendah, caching, manipulasi permintaan dan respons, dan banyak lagi. Sebaliknya, Retrofit adalah abstraksi REST tingkat tinggi yang dibangun di atas OkHttp. Retrofit 2 sangat digabungkan dengan OkHttp dan memanfaatkannya secara intensif.

Fungsi OkHttp: Penyatuan koneksi, gzipping, caching, pemulihan dari masalah jaringan, sinkronisasi, dan panggilan asinkron, pengalihan, percobaan ulang… dan seterusnya.

Fungsi Retrofit: manipulasi URL, permintaan, pemuatan, caching, threading, sinkronisasi ... Memungkinkan sinkronisasi dan panggilan asinkron.

Wubbalubbadubdub
sumber
7

Retrofit adalah Klien REST untuk Android dan Java oleh Square. Itu membuatnya relatif mudah untuk mengambil dan mengunggah JSON (atau data terstruktur lainnya) melalui Webservice berbasis REST. Di Retrofit, Anda mengonfigurasi konverter mana yang digunakan untuk serialisasi data. Biasanya untuk JSON, Anda menggunakan GSon, tetapi Anda dapat menambahkan konverter khusus untuk memproses XML atau protokol lain. Retrofit menggunakan pustaka OkHttp untuk permintaan HTTP. Anda harus menggunakan retrofit di atas okhttp untuk kemudahannya, untuk fitur-fiturnya.

Malti Devnani
sumber