por qué usar Retrofit cuando tenemos OkHttp

107

con OkHttp podemos hacer una solicitud HTTP y luego obtener una respuesta del servidor

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

luego con Gson lib convertir la respuesta al objeto que necesitamos.

esto es de Square / OkHttp doc:

Su API de solicitud / respuesta está diseñada con constructores fluidos e inmutabilidad. Admite llamadas de bloqueo síncronas y llamadas asíncronas con devoluciones de llamada

Leí de stackOverFlow

Retrofit utiliza OkHTTP automáticamente si está disponible

.

Entonces, mi pregunta es, ¿para qué es exactamente Retrofit?

¡¿Qué puede hacer Retrofit que OkHttp no pueda ?!

Creo que OkHttp y Gson resuelven el problema de la API de solicitud, entonces, ¿qué problema nos resuelve Retrofit?

Mehrdad Faraji
fuente
2
Basado en opiniones y, como tal, susceptible de ser cerrado como tal. El hecho es que ambos existen y ninguno ha muerto. Lo que significa que ambos tienen casos de uso válidos a los ojos de la comunidad de desarrolladores de Android.
fge
1
Echa un vistazo a esta publicación stackoverflow.com/q/16902716/1144203
ivan.sim
@isim Vi este enlace antes, ¡pero no puedo entender por qué necesito una actualización! y por qué Retrofit usa OkHttp!
Mehrdad Faraji
@MehrdadFaraji No necesita una modificación si OkHttp puede hacer lo que quiere. ¿Por reequipamiento uso OkHttp algunas cosas como para permitir OkHttp Callpatrón, OkHttp interceptor, certificado fijando etc
ivan.sim
el uso de retrofit con rxjava se ha convertido en una práctica común de la industria, que es otra razón para utilizar retrofit
paul_hundal

Respuestas:

95

con OkHttp podemos hacer una solicitud HTTP y luego obtener la respuesta del servidor ... luego con Gson lib convertir la respuesta al objeto que necesitamos

Tenga en cuenta que en su fragmento de código, omitió dos pasos notables: generar la URL y analizar el JSON usando Gson.

Entonces, mi pregunta es, ¿para qué es exactamente Retrofit?

Es para generar la URL (usando código generado con reconocimiento de tipos vinculado a su API REST específica) y realmente analizar el JSON usando Gson. En otras palabras, hace lo que omitió en su fragmento de código.

Además, para ciertos tipos de operaciones REST (por ejemplo, POST), ayuda un poco a ensamblar qué enviar (por ejemplo, generar el formulario codificado).

Por definición, no es necesario utilizar Retrofit. La modificación es un código de computadora, escrito por programadores de computadoras. Alguien más podría escribir código para hacer lo que hace Retrofit.

por qué Retrofit usa OkHttp

La actualización necesita realizar operaciones HTTP. Utiliza OkHttp donde esté disponible, para todo lo que OkHttp proporciona: compatibilidad con HTTP / 2 y SPDY, interceptores enchufables, etc.

CommonsWare
fuente
32

Debería utilizar la modificación si está intentando mapear la API de su servidor dentro de su aplicación (protección de tipos). Retrofit es solo un adaptador API envuelto sobre okHTTP.

Si desea escribir seguro y modularizar el código de interacción con su API, use retrofit. Aparte de eso, el rendimiento subyacente, los valores predeterminados de solicitud, etc. de okHTTP y Retrofit son los mismos.

También recomendaría escuchar este podcast de Jesse Wilson (desarrollador de los principales clientes HTTP de Android), donde habla en profundidad de la historia del desarrollo del cliente HTTP Apache, HTTPURLConnection, okHTTP y Retrofit.

geekoraul
fuente
23

Retrofit vs. OkHttp La razón es simple : OkHttp es un cliente HTTP / SPDY puro responsable de cualquier operación de red de bajo nivel, almacenamiento en caché, manipulación de solicitudes y respuestas, y muchas más. Por el contrario, Retrofit es una abstracción REST de alto nivel construida sobre OkHttp. Retrofit 2 está fuertemente acoplado con OkHttp y hace un uso intensivo de él.

Funciones de OkHttp: agrupación de conexiones, gzipping, almacenamiento en caché, recuperaciones de problemas de red, sincronización y llamadas asincrónicas, redirecciones, reintentos ... y así sucesivamente.

Funciones de Retrofit: manipulación de URL, solicitud, carga, caché, subprocesamiento, sincronización ... Permite sincronizar y realizar llamadas asíncronas.

Wubbalubbadubdub
fuente
7

Retrofit es un cliente REST para Android y Java de Square. Hace que sea relativamente fácil recuperar y cargar JSON (u otros datos estructurados) a través de un servicio web basado en REST. En Retrofit, configura qué convertidor se utiliza para la serialización de datos. Normalmente, para JSON, utiliza GSon, pero puede agregar convertidores personalizados para procesar XML u otros protocolos. Retrofit usa la biblioteca OkHttp para solicitudes HTTP. Debería utilizar retrofit sobre okhttp por su facilidad, por sus características.

Malti Devnani
fuente