Vorrei aggiungere sempre un parametro alle mie chiamate Retrofit. Per i valori che posso codificare posso semplicemente utilizzareRetrofit: aggiungi il parametro di runtime all'interfaccia?
@POST("/myApi?myParam=myValue")
ma cosa succede se voglio aggiungere android.os.Build.MODEL
?
@POST("/myApi?machineName="+ Build.MODEL)
non funziona. Sarebbe utile essere in grado di astrarre questa parte della chiamata di rete dal codice di implementazione.
EDIT
posso aggiungere Build.MODEL
a tutti i miei chiamate API utilizzando un RequestInterceptor
. Tuttavia mi sfugge ancora come aggiungerlo in modo selettivo a solo alcune delle mie chiamate api mentre utilizzo ancora lo stesso RestAdapter
.
EDIT 2
Risolto il titolo che era ogni sorta di male.
EDIT 3
implementazione attuale:
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);
Attualmente utilizzo un 'RequestInterceptor' per aggiungere il parametro a tutte le chiamate API, quindi l'API ignora i parametri aggiuntivi sulle chiamate in cui non erano necessari. Funziona, ma rende il codice meno chiaro perché non è possibile determinare quali chiamate necessitino di quali parametri predefiniti in modo da lasciare aperta questa domanda. – GDanger