2017-03-10 2 views
2

REST API를 사용하는 Android 앱을 제작 중입니다. 내가 OkHttp를 사용하고 있고 API가 필요하다면 API 키가 필요하다. 내 strings.xml 파일에 API 키를 저장하는 것이 가장 좋은 방법이라고 생각했습니다. 또한 Android SSD의 특정 코드를 포함하지 않는 것이 가장 좋은 방법이라고 생각했습니다. 이제는이 두 가지 생각이 상충 될 수 있음을 깨닫고 있습니다.안드로이드 앱의 REST API 코드에서 문자열을 어떻게 사용해야합니까?

같이 보이는 나는 MVP 아키텍처를 사용하여 응용 프로그램을 짓고 있어요 내 NetModule 클래스에서 나는 방법 provideOkHttpClient (캐시)이 : 나는 "추가 쿼리 매개 변수에서 인터셉터 코드를 가지고

@Provides 
@Singleton 
OkHttpClient provideOkhttpClient (Cache cache){ 
    OkHttpClient.Builder client = new OkHttpClient.Builder(); 
    client.cache(cache); 

    // Add GiantBomb.com api key to request 
    client.addInterceptor(new Interceptor() { 
     @Override 
     public Response intercept(Chain chain) throws IOException { 
      Request original = chain.request(); 
      HttpUrl originalHttpUrl = original.url(); 

      HttpUrl url = originalHttpUrl.newBuilder() 
        .addQueryParameter("apikey", MY_API_KEY) 
        .build(); 

      // Request customization: add request headers 
      Request.Builder requestBuilder = original.newBuilder() 
        .url(url); 

      Request request = requestBuilder.build(); 
      return chain.proceed(request); 
     } 
    }); 

    return client.build(); 
} 

"섹션 here

내 API 키를 저장하는 가장 좋은 방법은 무엇입니까? 이 키는 절대로 변경해서는 안되며이 앱에 대해 하나의 웹 사이트 API 만 사용 중이므로 지금은 모든 요청에 ​​포함됩니다. 내 strings.xml에 API 키를 넣으려고했지만 getString()을 호출 할 수있는 컨텍스트가 없습니다. 물론 API 문자열을 로컬 문자열에 저장할 수는 있지만 가장 좋은 방법은 아닌 것 같습니다. 어떤 도움을 주셔서 감사합니다!

Here is the full NetModule.java class 도움이 될 경우. 여기에 getString 메서드를 호출하려고하지만 Context가없고 Context를 얻을 수 있는지 잘 모르겠습니다. 아직 명확하지 않다면, 이것은 MVP에 대한 첫 발을 내디뎠다. 그리고 Udacity의 Android 앱 개발 과정을 밟은 후에 첫 번째 Android 앱만이되었다.

답변

1

이미 대거를 사용하고 있으므로 API 키를 NetModule 클래스에 삽입하는 것이 좋습니다.

+0

Okhttp 인스턴스를 주입하는 내 provideOkhttpClient() 메소드에서 API 호출에 키를 추가하여 그 작업을 수행하지 않습니까? 또는 키를 삽입하기 위해 Netmodule 클래스에 다른 메서드를 만드는 방법에 대해 이야기하고 있습니까? 열쇠는 항상 동일합니다. – intA