pourquoi utiliser Retrofit quand nous avons OkHttp

107

avec OkHttp nous pouvons faire une requête HTTP puis obtenir une réponse du serveur

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

puis avec Gson lib convertissez la réponse en objet dont nous avons besoin.

ceci est de Square / OkHttp doc:

Son API de demande / réponse est conçue avec des constructeurs fluides et une immuabilité. Il prend en charge les appels de blocage synchrones et les appels asynchrones avec des rappels

J'ai lu sur stackOverFlow

La modernisation utilise OkHTTP automatiquement si disponible

.

Ma question est donc à quoi sert exactement la modernisation?

ce que Retrofit peut faire que OkHttp ne peut pas?!

Je pense qu'OkHttp et Gson résolvent le problème d'API de demande, alors quel problème la retrofit résout pour nous?

Mehrdad Faraji
la source
2
Basé sur une opinion et en tant que tel susceptible d'être fermé en tant que tel Le fait est que les deux existent et aucun n'est mort. Ce qui signifie que les deux ont des cas d'utilisation valables aux yeux de la communauté des développeurs Android.
fge
1
Découvrez ce message stackoverflow.com/q/16902716/1144203
ivan.sim
@isim J'ai déjà vu ce lien, mais je ne comprends pas pourquoi j'ai besoin de retrofit?! et pourquoi Retrofit utilise OkHttp!
Mehrdad Faraji
@MehrdadFaraji Vous n'avez pas besoin de Retrofit si OkHttp peut faire ce que vous voulez. Pourquoi la modernisation utilise OkHttp Quelques choses comme activer le Callmodèle OkHttp, l'intercepteur OkHttp, l'épinglage de certificat, etc.
ivan.sim
l'utilisation de la modernisation avec rxjava est devenue une pratique courante dans l'industrie, ce qui est une autre raison d'utiliser la modernisation
paul_hundal

Réponses:

95

avec OkHttp, nous pouvons faire une requête HTTP puis obtenir une réponse du serveur ... puis avec Gson lib convertir la réponse en objet dont nous avons besoin

Notez que dans votre extrait de code, vous avez sauté deux étapes notables: générer l'URL et analyser le JSON à l'aide de Gson.

Ma question est donc à quoi sert exactement la modernisation?

Il s'agit de générer l'URL (en utilisant un code généré prenant en charge le type lié à votre API REST spécifique) et d'analyser réellement le JSON à l'aide de Gson. En d'autres termes, il fait ce que vous avez ignoré dans votre extrait de code.

En outre, pour certains types d'opérations REST (par exemple, POST), cela aide un peu à assembler ce qu'il faut soumettre (par exemple, générer le formulaire codé).

Par définition, vous n'avez pas besoin d'utiliser Retrofit. La modernisation est un code informatique, écrit par des programmeurs informatiques. Quelqu'un d'autre pourrait écrire du code pour faire ce que fait Retrofit.

pourquoi Retrofit utilise OkHttp

La modernisation doit effectuer des opérations HTTP. Il utilise OkHttp là où il est disponible, pour tout ce qu'OkHttp fournit: support HTTP / 2 et SPDY, intercepteurs enfichables, etc.

CommonsWare
la source
32

Vous devez utiliser la mise à niveau si vous essayez de mapper l'API de votre serveur dans votre application (sécurité de type). La modernisation est juste un adaptateur API enveloppé sur okHTTP.

Si vous souhaitez taper en toute sécurité et modulariser le code d'interaction avec votre API, utilisez la mise à niveau. En dehors de cela, les performances sous-jacentes, les valeurs par défaut de la demande, etc. de okHTTP et Retrofit sont les mêmes.

Je recommanderais également d'écouter ce podcast de Jesse Wilson (développeur des principaux clients HTTP Android), où il parle en profondeur de l'histoire du développement du client HTTP Apache, HTTPURLConnection, okHTTP et Retrofit.

geekoraul
la source
23

Retrofit vs OkHttp La raison est simple : OkHttp est un client HTTP / SPDY pur responsable de toute opération réseau de bas niveau, de la mise en cache, de la manipulation des demandes et des réponses, et bien d'autres. En revanche, Retrofit est une abstraction REST de haut niveau construite sur OkHttp. Retrofit 2 est fortement couplé à OkHttp et en fait un usage intensif.

Fonctions OkHttp: regroupement de connexions, gzipping, mise en cache, récupère des problèmes de réseau, synchronisation et appels asynchrones, redirections, tentatives… et ainsi de suite.

Fonctions de retrofit: manipulation d'URL, demande, chargement, mise en cache, threading, synchronisation ... Il permet les appels sync et async.

Wubbalubbadubdub
la source
7

Retrofit est un client REST pour Android et Java de Square. Cela rend relativement facile la récupération et le téléchargement de JSON (ou d'autres données structurées) via un Webservice basé sur REST. Dans Retrofit, vous configurez le convertisseur utilisé pour la sérialisation des données. En règle générale, pour JSON, vous utilisez GSon, mais vous pouvez ajouter des convertisseurs personnalisés pour traiter le XML ou d'autres protocoles. Retrofit utilise la bibliothèque OkHttp pour les requêtes HTTP. Vous devriez utiliser retrofit sur okhttp pour sa facilité, pour ses fonctionnalités.

Malti Devnani
la source