का उपयोग करते समय डैगर 2.0 के साथ कई एंडपॉइंट्स का समर्थन कैसे करें एक एंड्रॉइड प्रोजेक्ट के लिए मैंने निम्नलिखित डैगर मॉड्यूल में दिखाए गए अनुसार डैगर 2.6 के साथ रेट्रोफिट 2.1.0 और ओकेएचटीपी 3.4.1 कॉन्फ़िगर किया। मैं @Named
क्वालीफायर का उपयोग करके कई बैकएंड का समर्थन करना चाहता हूं।मैकवेबसेवर
@Module
public class ApiModule {
private static final String GITHUB_QUALIFIER = "GitHub";
private static final String TWITTER_QUALIFIER = "Twitter";
@Provides
GitHubClient provideGitHubClient(@Named(GITHUB_QUALIFIER) Retrofit retrofit) { /* ... */ }
@Provides
TwitterClient provideTwitterClient(@Named(TWITTER_QUALIFIER) Retrofit retrofit) { /* ... */ }
@Named(GITHUB_QUALIFIER)
@Provides
@Singleton
HttpUrl provideGitHubBaseUrl() { /* ... */ }
@Named(TWITTER_QUALIFIER)
@Provides
@Singleton
HttpUrl provideTwitterBaseUrl() { /* ... */ }
@Named(GITHUB_QUALIFIER)
@Provides
@Singleton
Retrofit getGitHubRetrofit(@Named(GITHUB_QUALIFIER) HttpUrl httpUrl,
OkHttpClient okHttpClient) { /* ... */ }
@Named(TWITTER_QUALIFIER)
@Provides
@Singleton
Retrofit getTwitterRetrofit(@Named(TWITTER_QUALIFIER) HttpUrl httpUrl,
OkHttpClient okHttpClient) { /* ... */ }
private Retrofit getRetrofit(String baseUrl,
OkHttpClient okHttpClient) { /* ... */ }
@Provides
@Singleton
public OkHttpClient provideOkHttpClient() { /* ... */ }
}
मैं परीक्षण के लिए MockWebServer का उपयोग करना चाहता हूं। हालांकि, मैं बाहर नहीं मिल रहा है, जबकि एक ही समय में एकाधिक बैकेंड समर्थन कैसे मैं MockWebServer के URL में पारित कर सकते हैं:
// From a unit test
mockWebServer = new MockWebServer();
mockWebServer.start();
ApiModule apiModule = new ApiModule();
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
String url = mockWebServer.url("/").toString();
// Here I cannot pass the URL to Retrofit
Retrofit retrofit = apiModule.provideRetrofit(/* HERE */ okHttpClient);
gitHubClient = apiModule.provideGitHubClient(retrofit);