API Connect v2018 のハンズオンをやってみた


# はじめに
IBMのWebサイトでは、IBM製品をよりよく知ってもらうために、DTE(Digital Technical Engagement)というサイトが提供されています。
https://ibm-dte.mybluemix.net/
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/66e51e35-2a90-3376-1980-7b2bbedb3f6c.png" width=50%>
ここでは、IBM製品のデモ動画やハンズオン環境が提供されます。
API Connect v2018ベースのハンズオンも提供されていますので、API Connect v2018のWeb GUIの操作性や新機能を評価することができます。(ハンズオン環境のAPI Connectのバージョンは、API Connect v2018.4.1.2です。(2019年5月現在))
DTEのハンズオンを利用する場合は、IBMIDでのログインが必要になります。まだお持ちでない無い方は、IBMIDを取得してください。（IBMIDの取得は無料です）

API Connect v2018のインストールを体験してみたい方は、以下の記事も参照ください。
[IBM Blue Demoで最新のAPI Connect v2018.4.1(LTS)をインストール&動かしてみた](https://qiita.com/uedatks/items/e9a0f83b340d5bb99ce8)

# API Connect v2018 のハンズオン
それでは、API Connectのハンズオンを実施しましょう。
DTEのAPI Connectのハンズオンは、以下にあります。
[Hands-on Labs for IBM API Connect](https://ibm-dte.mybluemix.net/api-management#deep-dive)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/282b9667-9a85-855a-ceb2-d9f5a2e15827.png" width=50%>

この中の、以下のハンズオンを実施します。
[APIC (v2018) Dev Jam Lab 1 - Create and Secure an API](https://www.ibm.com/cloud/garage/dte/tutorial/apic-dev-jam-series-lab-1-create-and-secure-api)

API Connect v2018は、VMのUbuntuServer上に構成され、WebブラウザーでVM環境にアクセスし、その環境上でのWeb GUIで操作します。所要時間は30分となっていますが、まだ操作に慣れていない方は、1時間弱程度を想定するとよいでしょう。

主な手順は、以下になります。

## 環境の準備(ハンズオン環境のリクエスト)
1. 環境のリクエスト
2. URLとパスワードの受領
3. サーバーへのアクセス

## ハンズオンの実施
1. API Managerへのログイン
2. API定義をインポート
3. セキュリティー定義の設定
4. プロパティー設定
5. アセンブル設定(Invoke)
6. API定義のテスト
7. 製品の定義とAPIの公開

# 環境を準備しましょう

##1. 環境のリクエスト
IBM IDでログインし、国と利用時間を指定して、環境のリクエストを投げます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/2a5a46d2-1196-79b6-1ca8-5be1d3a808be.png" width=30%>

##2. URLとパスワードの受領
IBMIDのメールアドレスに、環境へアクセスするURLとパスワードが送信されます。URLをクリックすると、Virtual machine accessのパスワード入力画面が表示されるので、メールで受信したパスワードを入力し、VM環境を表示します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/0e195a47-891c-7fa1-2662-f9eb0229c8c3.png" width=50%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/477ef1d5-65b7-0d28-9864-a1010a72d3c1.png" width=50%>

##3. サーバーへのアクセス
VM環境をクリックし、デスクトップ画面を表示します。このときsysadminユーザーのパスワードを聞かれますが、それは、チュートリアル内に記述されています。[APIC (v2018) Dev Jam Lab 1 - Create and Secure an API](https://www.ibm.com/cloud/garage/dte/tutorial/apic-dev-jam-series-lab-1-create-and-secure-api)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/10cca127-a50f-c21a-b031-47258cfb9109.png" width=50%>

#ハンズオンを実施します
ハンズオン環境にアクセスできるようになったら、チュートリアルの手順にしたがって、API定義を設定していきます。

##1. API Managerへのログイン
デスクトップ上のGoogle ChromeのアイコンをクリックしてWeb GUIを表示します。ブックマーク バーで、「API Connect API Manager」を選択します。ログイン画面で、ユーザー名、パスワードを指定してログインします。ユーザー名、パスワードは、チュートリアルに記述されています。
(ブラウザの言語設定は英語ですが、日本語を追加すれば日本語表示ができるようになります。以降のブラウザー画面は日本語表示に変更したものです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/4135ee9f-04e9-0283-806a-ea052becc80e.png)


##2. API定義をインポート
ログイン後、「APIおよび製品の開発」をクリックし、「APIおよび製品」画面で「追加」ボタンをクリックし、APIを選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/56e89891-cb15-e7c7-5b0b-515ec54aa097.png" width=70%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/5ab9cc24-09e1-e21c-e996-cb3fe5b49835.png" width=70%>
「APIの追加」画面で「既存のOpenAPI」を選択して、「次へ」をクリックすると、ファイルのアップロード画面が表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/68ae18c2-928f-aa4b-251d-4903bbe72502.png" width=70%>
「ファイルからインポート」画面で「参照」をクリックして、フィアル(/home/sysadmin/inventory.yaml)をアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/6baa086c-fc1c-52ae-793d-f5d4a4ad2de6.png)
「次へ」をクリックしますが、「APIのアクティブ化」画面では「APIのアクティブ化」チェックボックスをチェックしない状態で、「次へ」をクリックします。(次以降のAPI定義の修正をした後で、アクティブ化（公開）を実施します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/4583f0f1-10af-aca7-871a-50747dd4b543.png)


##3. セキュリティー定義の設定
API定義をインポートした後、「セキュリティー定義」で、以下の設定を追加します。

- クライアントID

| 項目                |値               |
|:-------------------|:----------------|
| 名前                |client-id        |
| 場所                |ヘッダー           |
| 鍵タイプ             |クライアント ID      |
| パラメータ名(オプション) | X-IBM-Client-Id |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/1225431e-c63d-f7bd-dd03-731a5ae85968.png)

- クライアント・シークレット

| 項目                |値                   |
|:-------------------|:--------------------|
| 名前                |secret               |
| 場所                |ヘッダー               |
| 鍵タイプ             |クライアント・シークレット    |
| パラメータ名(オプション) | X-IBM-Client-Secret |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/5b21c93b-26e5-3feb-0c73-f8ed5881e116.png)
「セキュリティー定義」は以下のように登録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/b9dae3b9-245f-f932-c499-1426bfb20da8.png)
「セキュリティー」を選択し、「追加」ボタンをクリックして、定義した「client-id」と「secret」を追加し、チェックボックスをチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/bd60af82-79a4-8989-d069-4c97ae1b372f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/f7d1a511-c68f-97e1-489f-d51190d86d3d.png)
##4. プロパティー設定
プロパティーを選択し「target-url」項目を編集します。

| 項目                      |値                                             |
|:--------------------------|:---------------------------------------------|
| プロパティー名               |target-url                                      |
| デフォルト値(オプション)        |https://apic-pot-inventory-api.mybluemix.net |
| カタログ                    |sandbox                                      |
| パラメータ名(オプション)        | https://apic-pot-inventory-api.mybluemix.net |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/11996072-746e-b7d4-48b5-592b8d069ef2.png)
以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/0e307d06-093d-969c-2b80-dcc508b8102e.png)
##5. アセンブル設定(Invoke)
「アセンブル」をクリックし、「Invoke」ポリシーの設定を変更します。
-「Invoke」ポリシー

| 項目             |値                                             |
|:----------------|:----------------------------------------------|
| URL             |`$(target-url)$(request.path)$(request.search)` |                                             

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/6420ed55-ec12-c7d7-446c-881ff90fe580.png)


##6. API定義のテスト
画面上部の「▶️」アイコンをクリックすると、テスト画面が表示されます。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/ad0af2b8-5a27-0b93-26ae-2249087fc729.png)
この画面で、「APIのアクティブ化」をクリックすると、このAPI定義を含む製品が自動生成され、カタログに公開され、自動生成のアプリケーション（クライアントID、クライアント・シークレット）とサブスクライブされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/1dcf1eb2-bd72-d711-c01d-f3c4108c7a6f.png)
「操作」の「呼び出す操作を選択」で、「get /Items」を選択して、画面下部の「呼び出し」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/722d799b-259c-7555-aa33-744aec528b01.png)

<details><summary>証明書の問題が発生する場合の対応方法</summary><div>
以下のメッセージが出る場合があります。
この場合は、このブラウザー上から一度、表示されているURLを直接開いて証明書を受け入れます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/1db2a411-7204-cdaa-4fc6-a29359f61d51.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/255e25b2-ed16-8cb5-8429-b593ca41b2c7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/6fcf3ee0-5349-e643-7d0a-ddc6cadd5fd7.png)
</div></details>

「呼び出し」で、「200 OK」が戻れば成功です。レスポンス・データが画面の本文に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/16869e69-5597-bf32-c355-2bdade8e4ab9.png)
##７. 製品の定義とAPIの公開
実際にAPI定義を公開します。（6.の手順は、アセンブリ画面でのテスト実行のための操作です）
「開発」画面で、「追加」ボタンをクリックし、「製品」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/96769882-bc71-6762-f7a0-3ec7fa678897.png)
「製品の追加」画面で、「新規製品」を選択し、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/d83b42ce-8237-9f87-4e4f-7a5b4a04de86.png)
「新規製品の作成」画面で、タイトルをセットし、「次へ」をクリックします。

| 項目                      |値                                            |
|:-------------------------|:---------------------------------------------|
| タイトル                   |Inventory APIs |  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/19b86753-d7f9-6a09-4e58-4b45ef72b966.png)
製品に追加するAPIを選択し、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/d58dbb22-b8cf-3bed-a241-1e0385a901d5.png)
プランの画面では、デフォルトのプランを利用するため、そのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/f8e58538-6d5a-6eb2-5d7b-e26e4b8e7372.png)
「公開」画面で、「製品の公開」チェックボックスをチェックし、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/a58ea592-913c-6de8-247e-a3166d6ee40d.png)
新規製品が作成され、その製品が公開されて、APIが呼び出し可能な状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193979/3b77ad49-84a2-34c4-c93d-a4710081e33e.png)
この後、開発者ポータルでアプリケーションを登録して、このAPIをサブスクライブすることで、外部からのAPI呼び出しが可能になります。
Lab２以降のチュートリアルでそれらの操作を実施します。

[Hands-on Labs for IBM API Connect](https://ibm-dte.mybluemix.net/api-management#deep-dive)


# まとめ
API Connect v2018のAPI Manager GUIを使用した、API定義、テスト、公開を実施しました。
API定義のセキュリティーやアセンブリでは、このほかにも様々な設定ができるようになっています。
より詳細な設定については、製品ドキュメントをご参照ください。

[IBM API Connect v2018.x](https://www.ibm.com/support/knowledgecenter/en/SSMNED_2018/mapfiles/getting_started.html)