剛好來記錄一下一個小問題
今天在我們需要透過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)。
沒有留言:
張貼留言