Este es sólo un ejemplo más de que en Kotlin podemos seguir usando las mismas librerías que siempre hemos utilizado en Java para Android.

Retrofit es una librería que simplifica muchísimo la generación de peticiones contra un API, y en este caso te voy a enseñar cómo integrarla con algunas peticiones del API de LastFM. Puedes ver el código completo funcionando en el repositorio de Bandhook Kotlin.

Este artículo forma parte de una serie de 30 con motivo del lanzamiento del curso presencial que impartiré en poco tiempo. Si no te lo quieres perder, ¡aún estás a tiempo de apuntarte aquí!

kotlin-desarrolladores-android

Retrofit 2 en Kotlin

El código en Kotlin va a ser muy parecido a lo que usaríamos en Java. Veremos más en detalle cuáles son algunas de sus diferencias, pero verás que todo es bastante sencillo e intuitivo.

Y también crearemos alguna función de extensión muy útil, ya veras.

Configuración del build.gradle

Tampoco entraré mucho en esto, pero puedes añadir las siguientes instrucciones al build.gradle:

Las primeras dependencias incluyen la última versión de OkHttp y un interceptor que sirve para hacer logging, que puede ser útil para depurar.

Las siguientes añaden Retrofit (excluyendo OkHttp, para que tengamos control sobre la versión que usamos), y el conversor de Gson para convertir las peticiones a clases.

Crea la interfaz de comunicación

Esta es la parte neurálgica de Retrofit. Es donde se especifica la estructura de las peticiones, que tendrá que coincidir con la de la API:

No tiene mucha historia. Se identifica el tipo de la petición con la notación, y luego los parámetros de la petición como argumentos de la función.

En Retrofit 2, necesitamos devolver objetos del tipo Call.

Inicialización del servicio de comunicación

Primero puedes inicializar el cliente de OkHttp de la siguiente forma:

Aquí podemos ver la utilización de la función, apply, que nos ayudará a inicializar el interceptor al estilo de un builder, sin necesidad de que la clase implemente ningún tipo de builder.

El LastFmRequestInterceptor no tiene nada muy destacable, pero le puedes echar un ojo en Github. Nada especial tampoco en la creación del servicio:

Haz tu primera petición

Debido a la necesidad de las Call en Retrofit 2, se vuelve un poco más tedioso el código:

Sin embargo, gracias a las funciones de extensión, nos podemos crear una función sobre Call que nos recupere los valores, de esta forma:

Mucho más sencillo, ¿verdad?

¿Cuál es la forma de unwrapCall?

Es una función que extiende a Call, y que lo que hace es ejecutar la petición, recuperar el body, y hacer que éste (que será de tipo U) ejecute la función f().

En el ejemplo de arriba T es LastFmResponse y U es List.

Conclusión

Con este ejemplo te quería demostrar una vez más que cualquiera de las librerías Java que conoces puede ser utilizada en Kotlin sin problema.

También que, lejos de suponer una complicación, en la mayoría de los casos el lenguaje nos hará las cosas incluso más sencillas.

Anímate y vente al curso que impartiré dentro de poco para aprender todo esto y mucho más. Descúbrelo todo sobre el lenguaje del futuro.