2017-02-26 55 views
0

我在網上看到的關於改裝2的所有示例都包含一個界面,該界面具有用於調用的不同網址。改裝2調用覆蓋

我已經做了相同的形式。

@GET("NewsFeed/latest") 
Observable<ArrayList<News>> getNews(@Query("category") int category, 
            @Query("language") int language, 
            @Query("location") int location, 
            @Query("poster") int poster, 
            @Query("limit") int limit, 
            @Query("offset") long offset); 

所有在調用的參數都是可選的,因此呼叫可以進行,即使沒有任何參數都specified.Is有沒有辦法,我可以做的是,除了重載方法? 我應該使用@nullable註釋嗎?

回答

1

您可以使用@QueryMap。這允許我們在Map中指定查詢,並且可以容易地添加新的查詢參數而無需修改現有代碼。

@GET("NewsFeed/latest") 
Observable<ArrayList<News>>getNews(
      @QueryMap Map<String, String> options); 

用途:

private void fetchNews() { 
    Map<String, String> data = new HashMap<>(); 
    data.put("category", "Sports"); 
    data.put("language", String.valueOf(2)); 

    // simplified call 
    newsService.getNews(data); 
} 

參考this for more details

0

正如你可以看到here,查詢參數是可選的。通過將null傳遞給方法,retrofit將忽略查詢參數。

(也許你不應該使用原始類)