【復習】BluemixのAPI ManagementでWeb APIを公開してみた

11/26に行われた[IBM Bluemix の API ManagementでWeb APIを公開する](https://coedo-dev.doorkeeper.jp/events/34261)ハンズオンの復習です。
コーディング無しでAPIをアセンブルしたり、APIにセキュリティをアドオン、バージョン管理によるインタラクティブ開発、**プラン定義によるAPIの商品化（私はここに惹かれました！）**、APIの使用状況を分析などが簡単にできます。
※2015年11月27日～28日時点の環境で行いました。
# 今回の環境
銀行の既存APIを利用する想定です。
![2015-11-28_002244.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/5fb68d17-2d42-5671-0a30-d05daa1a2502.jpeg)
# ハンズオン環境のセットアップ
[IBM Bluemixにログイン](https://console.ng.bluemix.net/?cm_mc_uid=33018919420114394219145&cm_mc_sid_50200000=1448868556&S_TACT=C428016W&S_CMP=infobluemix)し、今回は米国南部を選択します。
（新しくシドニーができていました。日本から少し近いからこちらのほうが早いようです。）
![2015-11-27_170903.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/e7789b8d-9398-2f6d-56b8-3dfa0bd28e7b.jpeg)

![2015-11-27_170926.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/4bd17baa-1a6e-0b66-96ea-c0a1318c7734.jpeg)
地域を選択した際にスペースの作成を指示された場合は、任意の名前でスペースの作成を行います。
（指示されなければこの作業は飛ばします。）
![2015-11-27_171259.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/c92d0ef0-9b81-9abb-7628-ff1fc6ea062b.jpeg)
## ランタイム（Node.js）の作成
![2015-11-27_172539 - コピー.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/d3d20ba3-3451-a70f-f068-4f58dddbddf8.jpeg)
![2015-11-27_172620.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/bf432721-1d3f-e99a-c6d6-961917c01745.jpeg)
ステージングが終わるのを待ちます。（以前よりステージングが早くなった？）
![2015-11-27_173002.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/de238f54-c4ab-7fbf-a237-baa85d7f6d3e.jpeg)
## サービス（API Management）の作成
![2015-11-27_172539.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/b4cd3b74-f569-b02f-b380-ecf2637c8e6f.jpeg)
![2015-11-27_173238.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/68e9d166-27fe-fd17-513a-6d77122043b9.jpeg)
## API Managementの起動
![2015-11-27_173352.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/5ef2e0e1-4aa2-9fc3-3a0c-9dd23f98b381.jpeg)
API Managementに移動
![2015-11-27_203220.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/d87327d4-13f2-0110-1fb3-c07a0d6b2237.jpeg)
これで準備が終わりました。
# Proxy APIの作成
既存のA銀行のRESTサービスを、そのままAPI Managementで公開/管理する、ゲートウェイ・プロキシーを実装します。
![2015-11-28_002310.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/8acd73be-ea76-5005-9fe4-cdd4458d78e8.jpeg)

## 既存環境であるA銀行の融資見積もりAPIの仕様を確認
[A銀行の融資見積もりAPI](https://apim-services.mybluemix.net/banka/v1/explorer)にアクセスして、一番下のGETメソッド①「/loans/quote」をクリックして展開します。
②年間利子率、③融資額（借入金）、④返済期間（月）をパラメータとして指定すると、毎月の返済額を元利均等返済で計算します。
![2015-11-30_225258.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/a6341299-6a21-15eb-c279-01a1ff3792ec.jpeg)
Request URLとResponse Bodyは後ほど使用するので、ブラウザはこのままにしておきます。
Request URL:https://apim-services.mybluemix.net/banka/v1/loans/quote?apr=1.5&amount=200000&term=60
Response Body:{"monthly_payment": 3461.98}

![2015-11-30_225344.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/578d6a51-279a-b0a5-8928-5cf0d70343a7.jpeg)
## API ManagerからAPIを新規に作成
![2015-11-27_173646.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/3fd92f29-4fad-5dd6-f53a-ccd820550eda.jpeg)

![2015-11-27_180316.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/04886fbf-82ca-f3ac-beb3-76fd2a1cb8cb.jpeg)
タイトル:Loans
基本パス:/loans/v1
バージョン:1.0.0
説明:返済額見積もり
![2015-11-27_180455.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/316ef4ba-f4dc-5cd9-66a5-d07d5879c462.jpeg)
メッソドを定義します。
②でPOSTメソッドを削除します。
![2015-11-27_180645.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/cb00673a-816a-82a5-8149-4e5a67501c63.jpeg)
メソッドを定義します。
パス:/quote?apr=1.5&amount=200000&term=60
要約:A銀行ローン
説明:返済見積もり
パス情報は、A銀行のAPIのRequest URLからコピーします。
![2015-11-27_181017.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/197cde9f-ac1e-2542-cf47-a3082c31b05e.jpeg)

![2015-11-27_181112.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/e605fa57-a2e7-1dfd-1f86-fbb8337ae87e.jpeg)

APIパラメーターの設定
amount:融資額
apr:年間利子率
term:返済期間（月）
④必須にチェックを入れます。
![2015-11-27_181245.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/08e9f40c-72e9-35b4-3a5a-c61ba07a3904.jpeg)
HTTPステータスコード200の場合の応答を定義します。
応答の例 {"monthly_payment": 3461.98}
![2015-11-27_181857.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/c227cc49-7c49-5e07-6595-8a905fbdea40.jpeg)
プロキシーURLとしてA銀行のローンAPIのエンドポイントを指定します。
プロキシーURLは、A銀行のAPIのRequest URLからコピーします。
③https://apim-services.mybluemix.net/banka/v1/loans/quote

![2015-11-27_182055.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/f28dc6b9-7a26-2f58-27e0-cd4d167ef3c1.jpeg)
画面右上の保存を選択するとAPIが保存されます。
![2015-11-27_182141.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/98c75295-6c3f-c919-5a62-cc5248e92ea0.jpeg)
## プランを作成してAPIを追加
![2015-11-27_201622.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/0791dd3b-1c98-9dba-955d-b747677bf37f.jpeg)
APIを公開するためにプランを作成します。
タイトル:Standard
説明:標準プラン
![2015-11-27_201706.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/ca6b363a-cd72-d490-16e3-c3bb5bfe1b83.jpeg)
プランにAPIを追加します。
![2015-11-27_201911.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/8ff46218-bed7-8b22-bcb4-804e8b6ec455.jpeg)
![2015-11-27_201938.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/1064aa43-3e14-2f98-fb0f-b15144f6f818.jpeg)
StandardプランにLoansのAPIが追加されていることを確認します。
![2015-11-27_201954.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/d64bda34-584d-b16e-b06a-b4f1ae8d68ef.jpeg)
プランのステージを行います。
ステージ先として、Sandboxを選択します。
![2015-11-27_202030.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/28cbfc3c-4438-712c-8057-9fd2608d2c96.jpeg)
![2015-11-27_202052.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/f3ed27b7-8981-54d0-e57d-8722c5968dfb.jpeg)
## プランの公開
![2015-11-27_202417.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/ba978b8b-7dab-b530-6a61-5adaee38212e.jpeg)

![2015-11-27_202503.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/41701f5c-6254-0e5e-c81d-0c75e77191e4.jpeg)

![2015-11-27_202602.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/062f65a1-cc29-b9fa-d028-0726374ab153.jpeg)

## アプリからAPIを利用
作成したAPI「Lotans」がカスタムAPIサービスとして登録されていることを確認します。
（表示されていない場合は一度ログアウトし、再度ログインします。）
![2015-11-27_184722.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/6e378666-6988-f687-4d37-9e8226eca229.jpeg)

![2015-11-27_184814.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/a7340b09-9c5e-14f6-5610-8f685e796712.jpeg)
作成したAPI「Loans」をカスタムAPIサービスとしてNode.jsランタイムに追加します。
![2015-11-27_185150.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/0cbbd01d-7b43-9eb4-1219-d40318dc2f0b.jpeg)
## 動作確認
![2015-11-27_185407.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/1e6615d2-710d-6ff7-9c81-3957ede1e01b.jpeg)
②+Path+①を繋いてWebブラウザでAPIにアクセスします。
Pathは動作確認を行ったA銀行のAPIのRequest URLからコピーします。
(URL:https://api.apim.ibmcloud.com/自分のID-dev/sb/loans/v1)
(Path:/quote?apr=1.5&amount=200000&term=60)
(Client_id:hoge-hoge-hoge-hoge-hoge)
例:https://api.apim.ibmcloud.com/自分のID-dev/sb/loans/v1/quote?apr=1.5&amount=200000&term=60/hoge-hoge-hoge-hoge-hoge
API Management経由でA銀行のローンAPIにアクセスします。
パラメーターを変更して再度APIをコールすると結果が変わることを確認できます。

![2015-11-27_185424.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/d81c5e7a-a254-5913-20be-445a530c004d.jpeg)
## APIの仕様状況を確認
API ManagerからAPIの仕様状況を確認します。
![2015-11-30_233954.jpg](https://qiita-image-store.s3.amazonaws.com/0/95309/18d15f37-1720-d387-6400-aa4c111b18b0.jpeg)


# 最後に
自分でプラン定義をしてAPIの商品化が出来ることに凄くワクワクしました。
当日は他にもAssmble APIの作成も行いました。GoogleMapのAPIも使い支店情報を表示させました。
12月3日にも[同様のハンズオン](https://coedo-dev.doorkeeper.jp/events/34262)が有るようですので、是非是非参加してみてください！
**お菓子とジュースもついています！**
*[AdventCalender - Bluemix - day1](http://qiita.com/advent-calendar/2015/bluemix)*