私はREST APIを消費するAndroidアプリを構築しています。私はOkHttpを使用しています。私が打つAPIはAPIキーが必要です。 APIキーをstrings.xmlファイルに保存するのがベストプラクティスだと思っていました。私はまた、Android sdk固有のコードを含まないことがベストプラクティスだと考えていましたが、今はこれらの2つの考えが矛盾している可能性があることを認識しています。Androidアプリケーションの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キーを保存する最良の方法は何ですか?このキーは決して変更してはいけません。私はこのアプリのために1つのウェブサイトのAPIしか使用していないので、今はすべてのリクエストに含まれます。私はstrings.xmlにAPIキーを入れようとしましたが、getString()を呼び出すコンテキストがありません。もちろん、私はAPIキーをローカルの文字列に格納することができますが、それが最善の方法であるかどうかはわかりません。どんな助けもありがとう!
Here is the full NetModule.java classの場合に役立ちます。ここでは、getStringメソッドを呼び出そうとしていますが、コンテキストがなく、コンテキストを取得することもできません。それがまだ明白でない場合、これはMVPへの私の最初の進出であり、UdacityのAndroid Apps開発コースを受講した後の最初のAndroidアプリだけです。
Okhttpインスタンスを注入する私のprovideOkhttpClient()メソッドのAPI呼び出しにキーを追加することで、私がやっていることではありませんか?または、キーを挿入するためにNetmoduleクラス内に別のメソッドを作成することについて話していますか?キーは常に同じです。 – intA