Retrofit 2 - O que devemos saber

32
Retrofit 2 Bruno Vieira O que devemos saber

Transcript of Retrofit 2 - O que devemos saber

Page 1: Retrofit 2 - O que devemos saber

Retrofit 2

Bruno Vieira

O que devemos saber

Page 2: Retrofit 2 - O que devemos saber

New Url Pattern

Page 3: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 4: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 5: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 6: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

https://api.dribbble.com/shots?access_token=...

Page 7: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 8: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 9: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

Page 10: Retrofit 2 - O que devemos saber

New Url Pattern

public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}

public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}

https://api.dribbble.com/v1/shots?access_token=...

Page 11: Retrofit 2 - O que devemos saber

New Url Pattern

Dynamic URL

public interface WebServiceApi{

@GETCall<JokeVO> getAJoke(@Url String url);

}

Page 12: Retrofit 2 - O que devemos saber

Bippples

https://github.com/OBrunoVieira/Bippples

Dribbble+

Chuck Norris Database

https://github.com/OBrunoVieira/Bippples

Page 13: Retrofit 2 - O que devemos saber

Bippples

https://github.com/OBrunoVieira/Bippples

Page 14: Retrofit 2 - O que devemos saber

OkHttp

Page 15: Retrofit 2 - O que devemos saber

OkHttp

Retrofit 1.9 - Is optional

Retrofit 2.x - Is required

Importing a specific version:

compile ('com.squareup.retrofit2:retrofit:2.0.2') { exclude module: 'okhttp'}

compile 'com.squareup.okhttp3:okhttp:3.2.0'

Page 16: Retrofit 2 - O que devemos saber

OkHttp

Interceptors public OkHttpClient clientInterceptor() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(this); ... return httpClient.build(); } public Response intercept(Chain chain) throws IOException { Request request = chain.request(); request = request.newBuilder()

.addHeader("Authorization", "123454324rtxccvbfdsfgvbcx!@#!@#!@#").build(); return chain.proceed(request); }

Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .client(clientInterceptor()) .build();

Page 17: Retrofit 2 - O que devemos saber

OkHttp

Interceptors public OkHttpClient clientInterceptor() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(this); ... return httpClient.build(); } public Response intercept(Chain chain) throws IOException { Request request = chain.request(); request = request.newBuilder()

.addHeader("Authorization", "123454324rtxccvbfdsfgvbcx!@#!@#!@#").build(); return chain.proceed(request); }

Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .client(clientInterceptor()) .build();

Page 18: Retrofit 2 - O que devemos saber

OkHttp.Interceptors

No Logging

Page 19: Retrofit 2 - O que devemos saber

OkHttp.Interceptors

No Logging, but..

compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}

Page 20: Retrofit 2 - O que devemos saber

OkHttp.Interceptors

No Logging, but..

compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}

Page 21: Retrofit 2 - O que devemos saber

OkHttp.Interceptors

No Logging, but..

compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}

Page 22: Retrofit 2 - O que devemos saber

Converters

Page 23: Retrofit 2 - O que devemos saber

Converters

No converter by default

compile "com.github.aurae.retrofit2:converter-logansquare:1.4.0"

Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build();

Page 24: Retrofit 2 - O que devemos saber

Converters

No converter by default

compile "com.github.aurae.retrofit2:converter-logansquare:1.4.0"

Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build();

Page 25: Retrofit 2 - O que devemos saber

Requests

Page 26: Retrofit 2 - O que devemos saber

Requests

Synchronous and Asynchronous

Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);List<ShotsVO> shotsList = call.execute.body;

Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);call.enqueue(new Callback<List<ShotsVO>>(){

@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){

...}...

}

Page 27: Retrofit 2 - O que devemos saber

Requests

Attention!

Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);call.enqueue(new Callback<List<ShotsVO>>(){

@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){

...}

@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}

https://github.com/OBrunoVieira/Bippples

Page 28: Retrofit 2 - O que devemos saber

Requests

Cancel

Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);

call.enqueue(new Callback<List<ShotsVO>>(){@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){

...}

@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}

call.cancel();

Page 29: Retrofit 2 - O que devemos saber

Requests

Cancel

Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);

call.enqueue(new Callback<List<ShotsVO>>(){@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){

...}

@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}

call.cancel();

Page 30: Retrofit 2 - O que devemos saber

=)

Page 31: Retrofit 2 - O que devemos saber

Source

http://square.github.io/retrofit/

https://inthecheesefactory.com/blog/retrofit-2.0/en

http://www.iayon.com/consuming-rest-api-with-retrofit-2-0-in-android/

https://github.com/square/retrofit/blob/master/CHANGELOG.md

Page 32: Retrofit 2 - O que devemos saber

www.concretesolutions.com.brblog.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030

São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449