2015-01-07 14 views
10

Mi piacerebbe sapere come creare un RestAdapter che può passare tra due endpoint. Attualmente nella mia app, il RestAdapter viene creato nella classe Application (singleton). Sto cercando un modo per avere endpoint diversi senza effettivamente creare più RestAdapter.Retrofit - Endpoint multipli con lo stesso RestAdapter

risposta

5

L'endpoint viene chiamato per ogni richiesta. Se si desidera attivare un algoritmo, è possibile implementare il proprio (ad esempio, fare round robin). Oltre a questo, un singolo RestAdapter è legato a un Endpoint, non puoi controllarlo su una base per metodo o altro. - Jake Wharton

Così ho creato adattatori di riposo diversi per i diversi endpoint che utilizzo nella mia app.

8

Retrofit 1 chiama Endpoint per ogni richiesta (senza cache), a voi solo bisogno di estendere la Retrofit.Endpoint con qualche setter e passare questo endpoint quando la creazione del RestAdapter:

Endpoint mDynamicEndpoint = new DynamicEndpoint("http://firstdomain.fr"); 
RestAdapter restAdapter = new RestAdapter.Builder() 
    .setEndpoint(mDynamicEndpoint) 
    .build(); 

mDynamicEndpoint.setBaseUrl("http://yourdomain.com"); 

Eventuali duplicati: Dynamic Paths in Retrofit

0

Si potrebbe avere una mappa dall'endpoint a RestAdapter. Si finirebbe con un adattatore per ciascun dominio. Non è una soluzione eccezionale se hai molti endpoint.

Credo che la soluzione DynamicEndpoint sopra potrebbe portare a condizioni di gara se due richieste a diversi endpoint sono state attivate contemporaneamente.

Problemi correlati