【Android】Retrofit 動態參數(非固定參數、非必須參數)

剛好來記錄一下一個小問題 
今天在我們需要透過Retrofit 來跟API溝通時有時候會需要帶入額外的參數
但如果在參數有可能變動下時候是不是就要做兩套一樣的東西?
(只是一個有帶參數,一個沒有)

那麼方便的Retrofit當然有解~

ex:
@GET("api/{brandId}/userInfo")  //無帶userId
Call GetUserInformation(@Path("brandId") String brandId);
@GET("api/{brandId}/userInfo")  //有帶userId
Call GetUserInformation(@Path("brandId") String brandId, @Query("userId") String userId);
以上兩個接口,差別在於有沒有帶『userId』的參數。 這樣兩個接口的做法看不出來有Retrofit有什麼優點。那有沒有更優的方法呢?當然有!   範例: 使用上面有帶userId的接口 在呼叫API時帶入userId時帶入null值
  • 需要帶入userId時:
callAPI.getInstance().GetUserInformation(Cfg.brandId,Cfg.userId);
  • 不需要帶入userId時:
callAPI.getInstance().GetUserInformation(Cfg.brandId,null);
Retrofit運行null值的參數,如果在實際用時傳入null, 系统不會造成crash,會直接把這個參數直接忽略掉(也就是call API時不帶userId)。

沒有留言:

張貼留言