Saltar a contenido

Definición del contrato de red con Retrofit

1. El concepto de contrato API

En Retrofit, la API se define como un contrato mediante una interfaz.
Este contrato especifica: - Qué endpoint se consume - Qué método HTTP se usa - Qué parámetros se envían - Qué tipo de respuesta se espera

La implementación real la genera Retrofit automáticamente.

2. Anotaciones principales de Retrofit

Retrofit utiliza anotaciones para describir las peticiones.

2.1. Métodos HTTP

  • @GET
  • @POST
  • @PUT
  • @DELETE

Ejemplo conceptual:

@GET("users")
suspend fun getUsers(): Response<List<User>>

3. Parámetros en Retrofit

3.1. Parámetros de ruta (@Path)

Se usan cuando parte de la URL es variable.

@GET("users/{id}")
suspend fun getUserById(@Path("id") id: Int): Response<User>

3.2. Parámetros de consulta (@Query)

Se añaden al final de la URL.

@GET("users")
suspend fun search(@Query("name") name: String): Response<List<User>>

4. Respuestas y envoltorio Response

Retrofit puede devolver directamente el objeto o envolverlo en Response<T>.

Ventajas de usar Response<T>: - Acceso al código HTTP - Acceso a cabeceras - Comprobación de éxito (isSuccessful)

if (response.isSuccessful) {
    val data = response.body()
}

5. Manejo de errores

Errores habituales: - Error HTTP (404, 500…) - Respuesta vacía - Error de red (sin conexión)

Por eso nunca se debe asumir que body() es no nulo.