Upload
trey-robinson
View
194
Download
1
Embed Size (px)
Citation preview
Basic REST API
• Create - http://www.fakeservice.com/user
• Read - http://www.fakeservice.com/user/{id}
• Update - http://www.fakeservice.com/user/{id}?name={new name}
• Delete - http://www.fakeservice.com/user/{id}
public interface UserService { @POST("/user") // CREATE void createUser(@Body User user); @GET("/user/{userId}") // READ User getUser(@Path("userId") String userId); @PUT("/user/{userId}") // UPDATE void updateUserName(@Path("userId") String userId, @Body User user); @DELETE(“/user/{userId}“) // DELETE void deleteUser(@Path("userId") String userId); }
public class User { String name; Date birthDate; Integer age; }
Http Headers
@Headers({"Accept: application/json”}) @GET(“/user/self“) User getUser(@Header("Authorization") String auth)
Request Body @PUT("/user/{userId}") void updateUserName(@Path("userId") String userId, @Body User user);
@Multipart @POST(“/user") void createUser(@Part("fName") String fName, @Part("lName") String lName);
@FormUrlEncoded @POST(“/user") void createUser(@Field("fName") String fName, @Field("lName") String lName);
Sync Callpublic void sendSync() { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(“http://www.myservice.com") .build(); DemoService service = restAdapter.create(DemoService.class); DemoModel rep = service.getMessage(apiId); // Do something w/ object }
Async Callpublic void sendAsyncButton() { service.getMessage(apiId, new Callback<DemoModel>() { @Override public void success(DemoModel demoModel, retrofit.client.Response response) { MainActivity.this.contentView.setText(demoModel.message); } @Override public void failure(RetrofitError error) { Log.e(TAG, error.getMessage()); MainActivity.this.contentView.setText(error.getMessage()); } }); }
Call w/ RxJava
public void sendRx() { Observable<DemoModel> observable = service.getMessageRx(apiId); observable.subscribe(new Action1<DemoModel>() { @Override public void call(DemoModel demoModel) { MainActivity.this.contentView.setText(demoModel.message); } }); }
Extras
• Adjustable logging level
• Custom GSON deserializers
• Custom deserializer
• Custom Http Client Implementations
Chris Ollenburg• Principal Consultant at Cardinal Solutions
[email protected] @cardinalNow www.cardinalsolutions.com
• CTO of Taggd’ LLC [email protected]
Linkshttp://square.github.io/retrofit/
https://github.com/OllenDev/RetrofitDemo