Retrofit en Kotlin para consumir APIs: Guía paso a paso

| Última modificación: 29 de octubre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Ahora es mucho más fácil consumir APIs en tus aplicaciones Android si usas Retrofit en Kotlin. Si aún no sabes cómo hacerlo y quieres aprender, en esta guía paso a paso te enseñaremos todo el proceso. Te mostraremos cómo configurar tu proyecto y también sabrás cómo mostrar los datos obtenidos en la interfaz de usuario.

Para este tutorial hemos decidido construir una app muy sencilla que consulta datos de películas de un servicio gratuito de API.

Retrofit en Kotlin qué es

Retrofit en Kotlin: La mejor opción para consumir APIs en Android

Por si no lo sabías, Retrofit es una de las librerías más populares cuando se trata de consumir APIs en Android. Su popularidad se debe a que te facilita enormemente la conexión y el manejo de datos obtenidos en formato JSON, convirtiéndolos en Kotlin. Así es como puedes trabajarlos sin complicaciones.

Fuera de eso, Retrofit en Kotlin es muy eficiente y no presenta problemas al manejar las peticiones en segundo plano. De hecho mejora bastante la fluidez de tu aplicación.

Configurando el proyecto de Retrofit en Kotlin

Paso 1: Crea un nuevo proyecto en Android Studio

Comienza creando un nuevo proyecto de Android en Android Studio. Puedes ponerle un nombre como MovieList y asegúrate de seleccionar Kotlin como lenguaje de programación.

Paso 2: Configura los permisos de internet

Para conectarse a internet y acceder a los datos de la API, agrega el permiso correspondiente en el archivo AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"/>

Paso 3: Agrega las dependencias en el archivo build.gradle

Retrofit necesita algunas librerías adicionales para su funcionamiento. Abre el archivo build.gradle y agrega las siguientes dependencias:

implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.6'

Con estas dependencias es que Retrofit en Kotlin convierte los datos JSON en objetos Kotlin y maneja las peticiones en segundo plano.

Tienes que sincronizar el proyecto para que se descarguen las librerías y puedas usarlas.

Creando la API para consultar datos de películas

Usaremos una API pública de películas. La URL para obtener películas populares es algo como:

https://api.samplemovieapi.com/movies/popular

Paso 4: Crea la Data Class para los datos de la API

Para que Retrofit pueda convertir los datos JSON a objetos Kotlin, necesitas crear una data class. El JSON de respuesta tiene una estructura como esta:

{
"movies": [
{
"title": "The Matrix",
"poster": "https://link.to/poster.jpg",
"rating": 8.7
},
...
]
}

En el directorio principal, crea una nueva clase llamada MovieResponse:

data class MovieResponse(
val movies: List<Movie>
)

data class Movie(
val title: String,
val poster: String,
val rating: Double
)

Paso 5: Crea la interfaz API para Retrofit

Ahora definimos los métodos de la API en una interfaz. Crea una interfaz llamada MovieApiService:

interface MovieApiService {
@GET("movies/popular")
suspend fun getPopularMovies(): Response<MovieResponse>
}

Entonces, el método getPopularMovies() usará la anotación @GET para hacer una solicitud GET a la URL de la API. Además, la palabra clave suspend permite que esta función se ejecute en segundo plano usando corrutinas.

Paso 6: Configura la instancia de Retrofit en Kotlin

Ve al archivo MainActivity.kt y configura la instancia de Retrofit que usarás en la aplicación. Añade este código en el MainActivity:

private fun getRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl("https://api.samplemovieapi.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
}

La función getRetrofit() devuelve una instancia de Retrofit configurada con la URL base de la API y un convertidor JSON.

Implementando la lógica de la app con Retrofit en Kotlin

Paso 7: Crea la función para hacer la solicitud de datos

Ahora tienes que añadir la función fetchMovies en el MainActivity:

private fun fetchMovies() {
CoroutineScope(Dispatchers.IO).launch {
val call = getRetrofit().create(MovieApiService::class.java).getPopularMovies()
val movies = call.body()

runOnUiThread {
if (call.isSuccessful) {
val movieList = movies?.movies ?: emptyList()
displayMovies(movieList)
} else {
showError()
}
}
}
}

En esta función, haces la llamada a la API y, si es exitosa, pasas los datos al método displayMovies() para mostrarlos en la interfaz de usuario. Si no ocurre esto, muestras un mensaje de error.

Paso 8: Configura el RecyclerView y el Adapter

Para mostrar las películas, necesitamos un RecyclerView. Así que, en el archivo activity_main.xml, agrega un RecyclerView con el ID rvMovies. Luego, crea una clase MovieAdapter para enlazar los datos con las vistas:

class MovieAdapter(private val movies: List<Movie>) : RecyclerView.Adapter<MovieViewHolder>() {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
return MovieViewHolder(layoutInflater.inflate(R.layout.item_movie, parent, false))
}

override fun getItemCount(): Int = movies.size

override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
val item = movies[position]
holder.bind(item)
}
}

El MovieAdapter recibe una lista de películas y la adapta para cada elemento de la vista.

Paso 9: Mostrar los datos en la pantalla

En este paso tienes que crear la función displayMovies en MainActivity para actualizar los datos en el RecyclerView:

private fun displayMovies(movies: List<Movie>) {
val adapter = MovieAdapter(movies)
binding.rvMovies.layoutManager = LinearLayoutManager(this)
binding.rvMovies.adapter = adapter
}

🔴 ¿Quieres entrar de lleno al Desarrollo Mobile? 🔴

Descubre el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Desarrollo de Apps Móviles por una semana

Así es como la función displayMovies recibe una lista de películas y la muestra en el RecyclerView.

Paso 10: Manejo de errores

Agrega un método para mostrar un mensaje de error en caso de que la llamada a la API falle:

private fun showError() {
Toast.makeText(this, "Error al cargar películas", Toast.LENGTH_SHORT).show()
}

Este Toast le deja saber al usuario si ocurrió un problema al cargar los datos.

Ejecuta y prueba la app

¡Lo lograste! Lo único que tienes que hacer ahora es probar tu aplicación. Cada vez que inicies la app, se mostrará la lista de películas populares obtenidas mediante Retrofit en Kotlin.

Con este tutorial ya tienes una buena idea de lo que puedes hacer con Retrofit en Kotlin. Ahora imagina crear apps completas para Android, aprendiendo desde cero y llevándolas a un nivel profesional. En el Bootcamp de Desarrollo de Aplicaciones Móviles iOS & Android de KeepCoding, aprenderás no solo a manejar Retrofit en Kotlin, sino también muchas más herramientas esenciales para convertirte en un desarrollador móvil profesional.

Jose Luis Bustos
Jose Luis Bustos

Lead Software Architect & Coordinador del Bootcamp en Desarrollo de Apps Móviles iOS & Android.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo de apps móviles ios & Android

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado