用于Java和Android應用的類型安全REST客戶端:Retrofit

jopen 10年前發布 | 47K 次閱讀 Retrofit Android開發 移動開發

Retrofit將你的REST API變為Java接口,Retrofit把REST API返回的數據轉化為Java對象方便操作,對于在項目中組織API調用,是一個不錯的解決方案。其請求方法和相對URL都帶有注解,使得代碼變得更加簡潔。使用注解,你可以很容易的添加一個請求主體,操縱URL或頭文件,并添加查詢參數。除此之外,每個函數可以定義為同步或異步,具有返回值的函數為同步執行,而異步函數沒有返回值且最后一個參數為Callback對象。

    public interface RetrofitInterface {

    // asynchronously with a callback  
    @GET("/api/user")  
    User getUser(@Query("user_id") int userId, Callback<User> callback);  

    // synchronously  
    @POST("/api/user/register")  
    User registerUser(@Body User user);  
}  


// example  
RetrofitInterface retrofitInterface = new RestAdapter.Builder()  
            .setServer(API.API_URL).build().create(RetrofitInterface.class);  

// fetch user with id 2048  
retrofitInterface.getUser(2048, new Callback<User>() {  
    @Override  
    public void success(User user, Response response) {  

    }  

    @Override  
    public void failure(RetrofitError retrofitError) {  

    }  
});  </pre>Retrofit默認情況下使用的是GSON,所以無需自定義解析,同時還支持其他轉換器。<br />

Retrofit turns your REST API into a Java interface.

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

The RestAdapter class generates an implementation of the GitHubService interface.

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint("https://api.github.com")
    .build();

GitHubService service = restAdapter.create(GitHubService.class);

Each call on the generated GitHubService makes an HTTP request to the remote webserver.

List<Repo> repos = service.listRepos("octocat");

Use annotations to describe the HTTP request:

  • URL parameter replacement and query parameter support
  • Object conversion to request body (e.g., JSON, protocol buffers)
  • Multipart request body and file upload


項目主頁:http://www.baiduhome.net/lib/view/home/1403076886247

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!