Retrofit para Java: Cliente HTTP type-safe para Android y Java
1. ¿Qué es Retrofit y para qué sirve?
Retrofit es una biblioteca potente y elegante para Java (y Android) que convierte una API HTTP en una interfaz de Java. En lugar de escribir manualmente código repetitivo para crear solicitudes HTTP, procesar respuestas y analizar JSON, Retrofit hace todo ese trabajo por ti. Serializa automáticamente tus objetos Java a JSON (u otro formato) para enviarlos al servidor y deserializa las respuestas del servidor de vuelta a objetos Java. Esto hace que el código sea limpio, legible y fácil de mantener.
¿Para qué sirve? Imagina que necesitas crear una aplicación que se comunique con una API REST (por ejemplo, la API de GitHub, OpenWeatherMap o tu propio servidor). Sin Retrofit, tendrías que usar clases de bajo nivel como HttpURLConnection o HttpClient, formar URLs manualmente, configurar cabeceras, manejar códigos de error y analizar JSON. Esto no solo es tedioso, sino que también es propenso a errores. Retrofit resuelve estos problemas proporcionando una forma declarativa de describir la API. Simplemente creas una interfaz con métodos, los anotas (por ejemplo, @GET, @POST), y Retrofit genera automáticamente la implementación de esa interfaz.
Retrofit es el estándar de facto para trabajar con HTTP en el mundo Android y Java. Se integra estrechamente con OkHttp (para una gestión eficiente de la red) y Gson/Moshi (para la serialización JSON). La biblioteca soporta solicitudes síncronas y asíncronas, carga de archivos, autenticación, almacenamiento en caché y muchas otras funcionalidades. Gracias a su simplicidad y flexibilidad, Retrofit se utiliza en miles de aplicaciones y servicios en todo el mundo.
2. Instalación
Retrofit se distribuye a través de Maven Central. Para usarlo en tu proyecto Java (por ejemplo, con Maven o Gradle), agrega las dependencias correspondientes. Ten en cuenta que también necesitarás un convertidor para la serialización (normalmente Gson o Moshi) y el propio OkHttp (que Retrofit usa internamente).
Maven (pom.xml)
<!-- Retrofit -->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
<!-- Convertidor Gson (para JSON) -->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-gson</artifactId>
<version>2.9.0</version>
</dependency>
<!-- OkHttp (normalmente se incluye automáticamente, pero puedes especificar la versión) -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
Gradle (build.gradle)
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
}
Importante: Las versiones pueden quedar obsoletas. Siempre verifica las versiones más recientes en el sitio oficial o en el repositorio de Maven Central. Si usas otro convertidor (por ejemplo, Moshi o Jackson), reemplaza converter-gson por el artefacto correspondiente (converter-moshi, converter-jackson).
3. Inicio rápido — ejemplo mínimo funcional
Vamos a escribir un ejemplo sencillo que obtenga una lista de usuarios desde el servidor JSONPlaceholder (una API REST de prueba).
Paso 1: Crea un modelo de datos (POJO)
// User.java
public class User {
private int id;
private String name;
private String username;
private String email;
// Getters (obligatorios para Gson)
public int getId() { return id; }
public String getName() { return name; }
public