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