perché usare Retrofit quando abbiamo OkHttp


107

con OkHttp possiamo fare una richiesta HTTP quindi ottenere la risposta dal server

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

quindi con Gson lib converti la risposta all'oggetto di cui abbiamo bisogno.

questo è da Square / OkHttp doc:

La sua API di richiesta / risposta è progettata con costruttori fluenti e immutabilità. Supporta sia le chiamate di blocco sincrone che le chiamate asincrone con callback

Ho letto da stackOverFlow

Retrofit utilizza OkHTTP automaticamente se disponibile

.

Quindi la mia domanda è a cosa serve esattamente il retrofit?

cosa può fare il Retrofit che OkHttp non può ?!

Penso che OkHttp e Gson risolvano il problema dell'API di richiesta, quindi quale problema risolve il retrofit per noi?


2
Basata sull'opinione e come tale suscettibile di essere chiusa in quanto tale. Il fatto è che entrambi esistono e nessuno è morto. Il che significa che entrambi hanno casi d'uso validi agli occhi della comunità di sviluppatori Android.
fge

1
Controllare questo post stackoverflow.com/q/16902716/1144203
ivan.sim

@isim Ho già visto questo link, ma non riesco a capire perché è necessario il retrofit? e perché Retrofit usa OkHttp!
Mehrdad Faraji,

@MehrdadFaraji Non hai bisogno di Retrofit se OkHttp può fare quello che vuoi. Perché il retrofit usa OkHttp Alcune cose come abilitare il Callpattern OkHttp, l'intercettatore OkHttp, il pinning del certificato ecc.
ivan.sim

l'utilizzo del retrofit con rxjava è diventato una pratica comune del settore, che è un altro motivo per utilizzare il retrofit
paul_hundal

Risposte:


95

con OkHttp possiamo fare una richiesta HTTP quindi ottenere la risposta dal server ... poi con Gson lib convertire la risposta all'oggetto di cui abbiamo bisogno

Tieni presente che nello snippet di codice hai saltato due passaggi importanti: la generazione dell'URL e l'analisi effettiva del JSON utilizzando Gson.

Quindi la mia domanda è a cosa serve esattamente il retrofit?

Serve per generare l'URL (utilizzando codice generato in base al tipo legato alla tua API REST specifica) e per analizzare effettivamente JSON utilizzando Gson. In altre parole, fa quello che hai saltato nello snippet di codice.

Inoltre, per alcuni tipi di operazioni REST (ad esempio, POST), aiuta un po 'ad assemblare cosa inviare (ad esempio, generare il modulo codificato).

Per definizione, non è necessario utilizzare Retrofit. Il retrofit è un codice di computer, scritto da programmatori di computer. Qualcun altro potrebbe scrivere codice per fare ciò che fa Retrofit.

perché Retrofit usa OkHttp

Il retrofit deve eseguire operazioni HTTP. Utilizza OkHttp dove disponibile, per tutto ciò che OkHttp fornisce: supporto HTTP / 2 e SPDY, intercettatori collegabili, ecc.


32

È necessario utilizzare il retrofit se si sta tentando di mappare l'API del server all'interno dell'applicazione (protezione dei tipi). Retrofit è solo un adattatore API avvolto su okHTTP.

Se desideri digitare in modo sicuro e modulare il codice di interazione con la tua API, utilizza il retrofit. A parte questo, le prestazioni sottostanti, i valori predefiniti delle richieste, ecc. Di okHTTP e Retrofit sono gli stessi.

Inoltre consiglierei di ascoltare questo podcast di Jesse Wilson (sviluppatore dei principali client HTTP Android), dove parla in modo approfondito della storia dello sviluppo del client HTTP Apache, HTTPURLConnection, okHTTP e Retrofit.


23

Retrofit vs. OkHttp Il motivo è semplice : OkHttp è un client HTTP / SPDY puro responsabile di qualsiasi operazione di rete di basso livello, memorizzazione nella cache, manipolazione di richieste e risposte e molto altro. Al contrario, Retrofit è un'astrazione REST di alto livello basata su OkHttp. Retrofit 2 è fortemente accoppiato con OkHttp e ne fa un uso intensivo.

Funzioni OkHttp: pool di connessioni, compressione con gzip, memorizzazione nella cache, ripristino da problemi di rete, sincronizzazione e chiamate asincrone, reindirizzamenti, tentativi ... e così via.

Funzioni di retrofit: manipolazione dell'URL, richiesta, caricamento, memorizzazione nella cache, threading, sincronizzazione ... Consente la sincronizzazione e le chiamate asincrone.


7

Retrofit è un client REST per Android e Java di Square. Rende relativamente facile recuperare e caricare JSON (o altri dati strutturati) tramite un servizio Web basato su REST. In Retrofit si configura il convertitore da utilizzare per la serializzazione dei dati. In genere per JSON, usi GSon, ma puoi aggiungere convertitori personalizzati per elaborare XML o altri protocolli. Retrofit utilizza la libreria OkHttp per le richieste HTTP. Dovresti usare il retrofit su okhttp per la sua facilità, per le sue caratteristiche.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.