Модернизация: добавить параметр runtime к интерфейсу?

Я хотел бы всегда добавлять параметр к моим вызовам для переоснащения. Для значений, которые я могу жестко кодировать, я могу просто использовать

@POST("/myApi?myParam=myValue") 

Но что, если я хочу добавить android.os.Build.MODEL ?

 @POST("/myApi?machineName="+ Build.MODEL) 

Не работает. Было бы полезно уметь отвлечь эту часть сетевого вызова от внедряющего кода.

РЕДАКТИРОВАТЬ

Я могу добавить Build.MODEL ко всем моим вызовам api, используя RequestInterceptor . Однако он все же ускользает от меня, как добавить его выборочно только к некоторым моим вызовам api, все еще используя тот же RestAdapter .

EDIT 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); 

Build.MODEL недоступен для использования в аннотации, потому что он не может быть разрешен во время компиляции. Он доступен только во время выполнения (потому что он загружается из свойства).

Это можно сделать двумя способами. Первый использует RequestInterceptor который вы указываете в вопросе.

Второй использует параметр @Query в методе.

 @POST("/myApi") Response doSomething(@Query("machineName") String machineName); 

Это требует, чтобы вы передавали Build.MODEL при вызове API. Если вы хотите, вы можете обернуть интерфейс Retrofit в API, который более дружелюбен к прикладному уровню, который сделает это за вас.