Volley vs Retrofit
Click here to load reader
-
Upload
facundo-rodriguez-arceri -
Category
Mobile
-
view
752 -
download
0
Transcript of Volley vs Retrofit
Volley vs Retrofit
http://www.develup.com.ar @develUp_mobile
Introducción
● Hasta hace un tiempo, los desarrolladores nos veíamos obligados a escribir AsyncTasks para realizar requests desde las apps.
● La adopción de Gradle impulsó el desarrollo de librerías.
● ¿Cómo elegir una entre tantas alternativas disponibles?
2/15
Características de Volley
● Librería para hacer requests HTTP de forma sencilla.
● Los Requests se crean y llevan callbacks de éxito y error asignadas, para manejar su resultado.
● Al terminar la ejecución de un Request, se llama a la callback correspondiente: Response.Listener o Response.ErrorListener.
3/15
Uso básico
● Un Request se crea a partir de la descripción de lo que representa en HTTP: URL, Método HTTP, request body.
● Una vez creado el Request, se agrega a una Queue.
● Los Request se van ejecutando a medida que se agregan a la Queue.
● Se puede cancelar un Request en particular o la Queue completa.
4/15
En la práctica
● Singleton Queue en lugar de Activity Queue.
● Request propio en lugar de JSONObjectRequest.
● Política de reintentos
● Timeout● Número de intentos● Backoff multiplier
● Necesidad de sobreescribir métodos para cambiar Headers del Request o agregar Form Params. 5/15
● En Volley, las callbacks de éxito y error son implementaciones de clases diferentes: ResponseListener y ResponseErrorListener.
● Toda respuesta no exitosa ejecutará el ResponseErrorListener.
Manejo de callbacks
6/15
Características de Retrofit
● Librería para mapear la interface de una API REST a una clase Java
● Los Request pueden hacerse en forma similar a Volley, con callbacks asincrónicas.
● Es altamente configurable: cliente HTTP, librería de conversión de objetos, etc.
7/15
Uso básico
● En primer lugar hay que mapear nuestros endpoints en una interface Java, utilizando annotations.
● Luego, en nuestra clase, configuramos Retrofit y creamos una instancia de nuestra interface, a partir del método create(Class interface).
● Al ejecutar los llamados a la API recibimos el objeto Call, al cual podemos ejecutarle execute() o enqueue(Callback), según querramos hacerlo sincrónico o asincrónico.
8/15
En la práctica
● Además de la dependencia de Retrofit, es necesario tener por lo menos una dependencia a un Converter deseado (GSON, Jackson, Simple XML, etc).
● Cuidado: las URL pueden ser absolutas o relativas, a no desesperarse si tenemos un 404 Not Found.
● GsonConverterFactory.create() puede recibir una instancia de Gson.
9/15
En la práctica
● Existe la posibilidad de proveer un OkHttpClient configurado por nosotros.
● Para utilizar una URL que no esté en nuestra API, hay que declarar la URL completa en el servicio: @POST(“http://otraUrl.com/endpoint”).
10/15
● En Retrofit, un único objeto Callback tiene los métodos onResponse() y onFailure()
● A pesar de ocurrir un error, como por ejemplo 404 Not Found, de todas maneras se ejecuta onResponse(), en donde hay que manejar el error evaluando que response.body() no sea null.
● Además, es necesario capturar una posible IOException.
Manejo de callbacks
11/15
Comparativa final
● Volley sirve simplemente para hacer requests, mientras que Retrofit es una herramienta más completa para manejar llamados a una API.
● Volley es un producto de Google, sin embargo no tiene una dependencia Gradle oficial (existe un Mirror que sincroniza automáticamente el repositorio oficial).
● Volley está listo para usarse apenas se incluye, Retrofit requiere algunas configuraciones iniciales.
12/15
● El manejo de headers y parámetros es más sencillo en Retrofit (annotations), y más engorroso en Volley (HashMap<String, String>).
● Volley permite obtener una respuesta cacheada de un request anterior, utilizando la url como clave, en el método queue.getCache().get(url), así como limpiar el cache con queue.getCache().clear(), o queue.getCache().remove(url). Retrofit no ofrece control sobre esto.
Comparativa final
13/15
● Retrofit obliga a capturar una IOException y hacer un nullcheck sobre respuestas que, a priori, parecen exitosas. Volley resulta más intuitivo en este punto.
● En cuanto a performance, hay que tener cuidado con lo que se está comparando.
Comparativa final
14/15
¿Preguntas?
¡¡¡Muchas gracias!!!
http://www.develup.com.ar @develUp_mobile