Saltar a contenido

Consumo de servicios REST en Android con Retrofit

1. Comunicación cliente-servidor en aplicaciones móviles

En el desarrollo de aplicaciones Android es habitual que la app actúe como cliente que consume datos de un servidor remoto mediante servicios web.
El modelo más común es arquitectura REST, donde el intercambio de información se realiza habitualmente en formato JSON sobre el protocolo HTTP.

1.1. Conceptos clave

  • API (Application Programming Interface): contrato que define cómo un cliente puede comunicarse con un servicio.
  • Endpoint: URL concreta que permite acceder a un recurso.
  • Métodos HTTP:
  • GET: obtener información
  • POST: enviar información
  • PUT / PATCH: modificar información
  • DELETE: eliminar información
  • Códigos de estado HTTP: indican el resultado de la petición (200, 404, 500, etc.).

2. ¿Por qué usar Retrofit?

Retrofit es una librería que simplifica enormemente el consumo de APIs REST en Android.

2.1. Problemas de hacerlo “a mano”

  • Gestión manual de URLs y conexiones
  • Conversión de JSON a objetos Kotlin
  • Manejo de errores complejo
  • Código poco legible y difícil de mantener

2.2. Ventajas de Retrofit

  • Define la API como interfaces
  • Conversión automática JSON ↔ objetos
  • Integración directa con corrutinas (suspend)
  • Separación clara entre red y lógica de negocio
  • Código limpio y defendible

3. Retrofit dentro de una arquitectura Android

Retrofit no es arquitectura, es una herramienta de red.
Normalmente se integra dentro de un patrón como:

  • MVC (proyectos sencillos)
  • MVVM (el más habitual en Android moderno)

Rol típico: - Retrofit → capa de datos - ViewModel → coordina la petición - UI → observa resultados

4. JSON y modelado de datos

Las APIs REST suelen devolver JSON.
Para trabajar cómodamente, este JSON se mapea a data class de Kotlin.

Ejemplo conceptual:

{
  "status": "success",
  "message": ["url1", "url2"]
}

Se transforma en:

data class ExampleResponse(
    val status: String,
    val message: List<String>
)

Este proceso se denomina serialización / deserialización.