IBM API Connectで公開したAPIを利用してみる


# はじめに
当記事は、[IBM API Connectで既存のAPIを公開してみる](http://qiita.com/Naomi_Tanaka/items/b20047d60db2143d9f6b)の記事で公開したAPIを開発者ポータルから参照・利用する方法を紹介します。
API ConnectのBluemix版でもオンプレ版でも同じ操作でできるはずですが、バージョンの違い等により操作や手順が異なってしまう可能性はありますのでご了承ください。

# 開発者ポータルの利用

公開されたAPIの情報は開発者ポータルから参照することができます。開発者ポータルは、APIを利用するアプリ開発者がすぐにAPIを使えるように、APIの仕様や利用方法を安全に開示するポータルサイトです。この開発者ポータルは、新しいバージョンのAPIを公開したら表示する情報をアップデートしなければなりませんし、アクセスするユーザーに応じて、APIの可視性を制御することも必要です。もちろんこのような開発者ポータルを手組みで開発することも可能ですが、早いAPIのリリースサイクルをサポートしつつ、ユーザーごとの可視性の制御まで実施しようとすると、このポータルの構築とメンテナンス作業に対して膨大な労力が発生してしまいます。そこでAPI Connectでは、安全にAPI情報を開示できる開発者ポータル機能を提供し、容易に安全な開発者ポータルを立ち上げる機能を提供しています。

## 1. 開発者ポータルの有効化

API Connectでは、開発者ポータルは、各カタログごとに立ち上げることができます。カタログとは、API Connectの中での作成したAPIをデプロイする稼働環境の単位です。デフォルトで`Sandbox`というカタログが用意されていて、必要に応じてカタログを追加していくことができます。
開発者ポータルはデフォルトでは無効となっており、設定を有効化することで立ち上げることができます。

まずは、前回の記事でAPIを公開した`Sandbox`カタログの開発者ポータルを有効にしてみましょう。
APIマネージャーにログインして、`ダッシュボード`メニューに入ります。
![apimanager_banner2_1.png](https://qiita-image-store.s3.amazonaws.com/0/122053/a5c5cfd1-c278-8494-b3a3-6c420fe70471.png)

`Sandbox`カタログをクリックします。
![sandbox.png](https://qiita-image-store.s3.amazonaws.com/0/122053/dfa0770d-2b75-5e10-bfbb-4f1e9c26bee7.png)

上部のタブのメニューの一番右の`設定`アイコンをクリックします。
![catalog_setting2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/4ad6d3f6-1e9c-cfaf-d5ee-f237c160f8a2.png)

左のメニューから`ポータル`を選択します。
![catalog_setting_portal_2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/e82fa604-a7e6-a88b-f35a-471f505ea9c6.png)

ポータルの構成メニューが開きます。

`ポータルの構成`セクションにて、`ポータルの選択`欄にて、`なし`から`IBM 開発者ポータル`に変更します。`URL`に表示されているのは、作成される開発者ポータルのURLです。
![catalog_setting_portal2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/5ff5d275-9c2c-a2f3-e597-e067e58defd8.png)
<補足>
開発者ポータルのURLの中の、`naomit-provider`というのは、この環境のプロバイダー組織の名前です。`sb`というのは、`サンドボックス`カタログの名前です。このようにAPI Connectでは、プロバイダー組織の名前やカタログの名前を、URLに使うルールとなっており、お使いの環境のプロバイダー組織やカタログの名前にに応じて、URLが生成されています。


設定を変更したら、右上の`保存`ボタンをクリックします。

保存の際、開発者ポータルの作成が完了するとメールが送信される旨のメッセージが表示されるので、`OK`をクリックします。
![portal_create_message.png](https://qiita-image-store.s3.amazonaws.com/0/122053/f22db352-d73d-7428-36f0-e99ea08790f0.png)

開発者ポータルの作成が完了すると、管理者宛にメールが届くので、メール内のワンタイムリンクをクリックして、開発者ポータルへアクセスします。
アクセスすると、`パスワードのリセット`画面が表示されます。`ログイン`ボタンをクリックして、新しいパスワードを入力して、`保存`ボタンをクリックします。
![portal_admin_password_first_login.png](https://qiita-image-store.s3.amazonaws.com/0/122053/4e8bfbc4-f104-43db-9154-a3cfcd379cd9.png)

これで、開発者ポータルの管理ユーザー`admin`のパスワードが設定され、ログインされた状態となります。表示されている画面上から、`admin`ユーザーのプロファイルを設定することもできます。

`admin`ユーザーは、開発者ポータルの管理ユーザーで、ポータル・サイトの画面のテーマやロゴ、レイアウトなどのLook & Feelを設定するための管理ユーザーです。
開発者ポータルのホームページにアクセスすると、最上部に管理者用のメニューが表示されており、ポータルの管理が可能となっていることが分かります。
![portal_admin_menu.png](https://qiita-image-store.s3.amazonaws.com/0/122053/785103f4-4f00-993a-c45c-14135c6f692b.png)

管理ユーザーでポータル画面のカスタマイズが行えますが、ここでは、デフォルトのままの画面で進めます。

## 2. 開発者組織と開発者ユーザーの登録
開発者ポータルの有効化はできましたが、APIの利用者として開発者ポータルを利用するために、開発者組織とその組織のユーザーを登録する必要があります。

APIマネージャーにログインして、`ダッシュボード`メニューに入り、`Sandbox`カタログをクリックします。
上部のタブの左から3つ目のアイコンの`コミュニティー`アイコンをクリックします。
![catalog_community_icon2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/907f4bce-22c9-d494-75f4-ead5f1f92e72.png)

開発者組織の設定画面が表示されるので、追加アイコン![add_icon.png](https://qiita-image-store.s3.amazonaws.com/0/122053/deedec5b-734e-1a6e-1949-9477310080d4.png)をクリックして、開発者組織を追加します。


開発者組織の名前を入力し、`新規ユーザー`をクリックして、新しいユーザーのメールアドレスを入力して、`追加`をクリックします。ポータルのユーザー・レジストリーに登録されている既存のユーザーを利用することもできます。
![catalog_devorg_add2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/10afa60f-1885-5b68-156e-5676d49aa81c.png)


<補足>
ここでの設定は、ポータルにどのユーザー・レジストリーを利用しているかに応じて若干異なります。ポータルの認証や招待に利用するユーザー・レジストリーは、カタログごとの開発者ポータルの設定に登録されています。ポータルに利用されているユーザー・レジストリーを変更/確認するには、各カタログに入り、上部のタブのメニューの一番右の`設定`アイコンをクリックして、左のメニューから`ポータル`を選択します。`ユーザーの登録と招待`セクションで、ユーザー・レジストリーの設定を確認/変更できます。

登録した開発者組織の所有者ユーザー宛てにメールが送信されます。アカウントのアクティベーション・リンクが含まれたメールを開き、メール内のリンクをクリックして、パスワードなど必要な項目を入力し、`有効化`をクリックします。
![portal_owner_activate3.png](https://qiita-image-store.s3.amazonaws.com/0/122053/2f32e7f6-6d11-ce7e-9365-880394bb8949.png)

これで、開発者ユーザーの設定ができました。開発者ポータルのホームページが表示されているので、右上の`Login`をクリックして、登録したユーザーのメールアドレスとパスワードでログインします。
![portal_home_page.png](https://qiita-image-store.s3.amazonaws.com/0/122053/0e8e76e4-05c5-bbf1-cc77-38cdae4694a2.png)

以上で開発者ポータルを利用する準備ができました。

## 3. 開発者ポータルでのアプリケーション登録
APIを利用するためには、どのアプリケーションでそのAPIを利用するのかの利用登録を行う必要があります。アプリケーション登録を行うとAPIキーが発行され、発行されたアプリケーションごとのAPIキーを利用して、API呼び出しを行うことができるようになります。

ポータルの`アプリケーション`タブをクリックします。
![portal_tab_application2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/7e7337e0-0576-5b60-2731-cb98c9751685.png)

`Create new App`をクリックします。
![create_new_app2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/c5a16750-d48d-817a-53f8-db449df8514f.png)

アプリケーションの名前を入力して`送信`をクリックします。
![create_application2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/e750a176-16c9-a255-44df-6965ff0d2fe6.png)

アプリケーションを登録すると、クライアントID（APIキー）とクライアント・シークレットが発行されます。クライアント・シークレットは一度のみしか表示できないため必要な場合はここでメモをしておきます。
![new_application.png](https://qiita-image-store.s3.amazonaws.com/0/122053/06dcdf21-d990-ae57-57d0-372f4fa60c62.png)

## 4. 開発者ポータルでのAPI呼び出し

これでAPIを利用する準備ができました。利用できるAPIを見てみましょう。ポータルの`API製品`タブに移動すると、`banking-services`製品が表示されています。これは前回の記事で公開したAPIが含まれる製品ですね。この製品をクリックすると詳細が確認できます。
![portal_product.png](https://qiita-image-store.s3.amazonaws.com/0/122053/151b54ce-1791-6b05-acd3-a541bc413c9a.png)

`連絡先情報`や`ライセンス`を展開すると、APIマネージャーで設定した情報が表示されていることが分かりますね。下にスクロールすると、設定したプランが表示されています。
![portal_product_info.png](https://qiita-image-store.s3.amazonaws.com/0/122053/0825817e-26b9-6de5-2f7e-381cc3d1272c.png)

利用したいプランを利用登録するために、`配信登録`をクリックします。
![portal_select_plan.png](https://qiita-image-store.s3.amazonaws.com/0/122053/5a9a3570-3e17-cf74-a513-0ed61d2a3314.png)

登録されているアプリケーションが表示されるので、先ほど登録したアプリケーションにチェックを入れて、`配信登録`をクリックします。
![portal_plan_subscribe2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/171d3301-cf7f-6a6c-a0dc-7fc2ff1bdf06.png)


では、実際にAPIの呼び出しをテストしてみましょう。
左のAPIの一覧から（ここでは1つのAPIしかありませんが、）`支店情報取得API`をクリックします。
![portal_select_api2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/fb1c8a66-1283-f05c-90c7-a7de7d5f7ddd.png)

そうするとこのAPIの詳細仕様が表示されます。
APIマネージャーで設定した内容が反映されていることを確認します。

左の操作の一覧から（ここでは1つの操作しかありませんが、）`GET /details`を選択すると、右側に、`要求の例`、`応答の例`が表示されます。
![portal_select_operation2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/c4a56357-a29f-effa-3334-79305846eb1f.png)

![portal_sample_req_res.png](https://qiita-image-store.s3.amazonaws.com/0/122053/c4af738b-f873-eb5e-b8fd-cbde8c7b3c85.png)

少し下にスクロールすると、このAPIをテスト実行することができます。
![portal_test_api2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/463effc1-d084-7c56-559b-eecd03dab28c.png)

`クライアントID`に、登録したアプリケーションが設定されていることを確認し、`操作の呼び出し`ボタンをクリックします。
![portal_test_api3.png](https://qiita-image-store.s3.amazonaws.com/0/122053/52bed0a1-7083-fe6b-1633-82fd49f5ec28.png)

<補足>
公開されているAPIのURLを確認してみると、基本パスの前に組織の名前`naomit-provider`やカタログの名前`sb`が含まれていることを確認できます。API ConnectでAPIを公開すると、このように、URLに組織名とカタログ名が含まれます。

API呼び出しが行われ、要求と応答のメッセージが確認できます。
![portal_test_api_result2.png](https://qiita-image-store.s3.amazonaws.com/0/122053/bc77ca58-d899-fca4-83cf-a4bc651567e4.png)

以上で、API Connectで公開したAPIを利用できました。