我希望在我的Retrofit调用中始终添加一个参数。对于我可以硬编码的值,我只需使用
@POST("/myApi?myParam=myValue")
但是如果我想附加 android.os.Build.MODEL
该怎么办?
@POST("/myApi?machineName="+ Build.MODEL)
无法正常工作。将这部分网络调用抽象出来并与实现代码分离将非常有用。
编辑: 通过使用请求拦截器,我可以在所有 api 调用中添加 Build.MODEL。然而,我仍然不知道如何仅对某些 api 调用添加它,同时仍然使用相同的 RestAdapter。
编辑2: 已修复标题的错乱。
编辑3: 当前实现:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("myapi")
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestInterceptor.RequestFacade request) {
request.addQueryParam("machineName", Build.MODEL);
}
})
.build();
API_SERVICE = restAdapter.create(ApiService.class);
RequestInterceptor
来向所有API调用添加参数,然后在不需要这些参数的调用中忽略额外的参数。这种方法虽然可行,但会使代码变得不够清晰,因为无法确定哪些调用需要哪些默认参数,所以我将保持这个问题的开放状态。 - GDanger