Android projemde tek API bitiş noktası için aşağıdaki RetrofitApiModule
kullanıyorum. Lütfen dikkat, enjekte bağımlılıkları için Dagger kullanıyorum.Retrofit kullanarak çoklu API bitiş noktalarını nasıl adreslenir?
@Module(
complete = false,
library = true
)
public final class ApiModule {
public static final String PRODUCTS_BASE_URL = "https://products.com";
@Provides
@Singleton
Endpoint provideEndpoint() {
return Endpoints.newFixedEndpoint(PRODUCTS_BASE_URL);
}
@Provides
@Singleton
ObjectMapper provideObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return objectMapper;
}
@Provides
@Singleton
RestAdapter provideRestAdapter(
Endpoint endpoint, ObjectMapper objectMapper) {
return new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.NONE)
.setEndpoint(endpoint)
.setConverter(new JacksonConverter(objectMapper))
.build();
}
@Provides
@Singleton
ProductsService provideProductsService(RestAdapter restAdapter) {
return restAdapter.create(ProductsService.class);
}
}
Şimdi, iletişim kurmak istediğiniz başka API (örn "http://subsidiaries.com"
) yoktur. ve RestAdapter
yeniden kullanılırken verilen ApiModule
uzatılabilir mi? Yoksa uzatmamalı mıyım? Modülü çoğaltmaya çalıştım. Ancak bu, Endpoint
, ObjectMapper
'u kopyaladığım ve RestAdapter
'un bir özel denetçisine sahip olduğumu içerir - bu yüzden yapamam.
"ApiModule" kurucusunu hazırlayıp, son noktayı oraya iletemez ve tüm yöntemlerde IF koşuluna göre kod uygulayamazsınız? –
@SweetWisher ツ Bağımlılık enjeksiyonu ** varsayılan yapıcıyı ** kullanır. Bu nedenle, farklı durumları elle işlemek için parametreleri aktarmak burada yardımcı olmaz. – JJD