下記記事で利用しているAmazon API Gatewayの利用詳細となります。
関連記事
目的
自前実装に比べて、セキュリティを担保しつつメンテナンスコストを低くしたい
概要図
Amazon API Gatewayを利用すると他所のAPIを一括管理するだけでなく、自社のAPIをよりセキュアに利用/アクセス回数のスロットリング/キャッシュを行う事も出来、CloudWatchでアクセス状況も見れるとの事なので、自社のレガシAPIのエンハンス用途にも良いとの事でした(公式マニュアル)
Amazon API Gatewayに新しくAPIを作成しResourcesを定義
本来会社名部分をパラメータ化すべきですが、、、テストという事で
Jsonレスポンスのスキーマを作成
APIのデプロイ及びAndroid用SDKをGenerateする
ダウンロードしたファイルを解凍するとpom.xmlファイルがあるのでMavenでビルド
mavenが入っていない場合、Macでhomebrewが入っていれば brew install maven
MacBook:Mycompany-Client-0.0.2 takashi$ pwd /Users/takashi/Downloads/Mycompany-Client-0.0.2 $ ls LICENSE.txt README.md pom.xml target NOTICE.txt build.gradle src $ mvn install ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
ビルドされたファイルをAndroidStudioのlib下にコピー
AndroidStudioでプロジェクトを新規作成、Project表示としてlibs下にコピー
及び build.gradle の dependencies を確認
ビルドで生成されたファイル郡
Android Studioで開いているプロジェクトのLibs下にコピー
Manifestのパーミッションを確認
下記が入っている事を確認
<uses-permission android:name="android.permission.INTERNET"/>
MainActivityにコードを書く
スキーマとして定義した物が名前引き可能です。
実行するとgithub apiからgetFollowersの値を取得してくれます。
ソースコード
import するパッケージ名やAPI名、メソッド名はご自身の設定に合わせて下さい。
package net.skyarch.myapplication;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.amazonaws.mobileconnectors.apigateway.ApiClientFactory;
import net.skyarch.api.SkyarchAPIClient;
public class MainActivity extends AppCompatActivity {
protected final String TAG = "API Gateway SDK Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
//Githubから follower数を取得
ApiClientFactory factory = new ApiClientFactory();
final SkyarchAPIClient client = factory.build(SkyarchAPIClient.class);
int followerCount = client.githubGet().getFollowers();
Log.d(TAG, "git followers" + Integer.toString(followerCount));
client.githubGet().
return null;
}
}.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
参考記事
Amazon API Gatewayの利用方法
http://dev.classmethod.jp/cloud/aws/api-gateway-with-android/
投稿者プロフィール
-
Japan AWS Ambassadors 2023, 2024
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております
機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。








