Retrofit

Estructura para tu modelo de Retrofit

Los archivos más importantes

ApiClient.Java

ApiService.Java

models

Api Service

Esta será la interfaz en la que declararemos los metodos de la api

public interface GitHubService {
  @GET("/users/{user}/repos")
  List<Repo> listRepos(@Path("user") String user);
}

Api Service

Las cabeceras

@GET("/users/{user}/repos")


@GET("/users/list?sort=desc")

Las anotaciones de los métodos, de primera instancia, nos permiten manipular el tipo de método y la URL a la cuál haremos la petición.

Api Service

Argumentos del método

@POST("/users/new")
void createUser(@Body User user, Callback<User> cb);

Los argumentos que contenga el método de la petición definen por medio de anotaciones qué papel jugará ese argumento.

@GET("/group/{id}/users")
List<User> groupList(@Path("id") int groupId, @Query("sort") String sort);

Api Service

Peticiones sincronas y asíncronas

@POST("/users/new")
void createUser(@Body User user, Callback<User> cb);

Esto lo define el valor que va a devolver la función.

@GET("/group/{id}/users")
List<User> groupList(@Path("id") int groupId, @Query("sort") String sort);

void

Asíncrona

Object

Sincrona

Api Service

RxObservable

@GET("/users/list")
Response userList();

@GET("/users/list")
void userList(Callback<Response> cb);

@GET("/users/list")
Observable<Response> userList();

Así mismo podemos definir un observador de RxJava para obtener la respuesta.

Api Client

En esta clase definiremos el comportamiento del objeto encargado de realizar las peticiones.
Para un mejor manejo de este objeto utilizamos el patrón Singleton.

APP

Client

Server

Api Client

El Truco del Singleton está en el constructor y en el método getInstance

public class ApiClient {

    public static ApiClient API_CLIENT;

    public static ApiClient getInstance(Context context) {
        if(API_CLIENT == null)
            API_CLIENT = new ApiClient()

        return API_CLIENT
    } 

    private ApiClient (Context context){
        //Constructor
    }
}

Retrofit

By Petter Hdz

Retrofit

  • 589