CData Software ハンズオン（RDBからWebAPIをポイント＆クリックで作成）

# 使用するCData製品

- [CData API Server](https://www.cdata.com/jp/apiserver/)

# MySQLへの接続確認

（注意）CData準備のハンズオン環境のマシンは、MySQL Community Serverのインストール、および、サンプルデータベースの作成済です。

MySQLのインストール、および、サンプルデータベースの設定を実施していない場合は下記の記事にしたがってMySQLの環境を準備してください。

[WindowマシンへのMySQL Community Serverのインストール、および、サンプルデータベースの作成方法](https://qiita.com/kuwazzy/items/5cc0a3bc9d5ceec528e6)

MySQL Workbenchを起動して、MySQLへ接続して、 サンプルの「sakila」データベース内の「actor」テーブルのデータを表示してみます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/3ece31ed-1630-c1fc-d7ed-81f796914d53.png)


# CData API Serverのインストール

以下のリンクからCData API Serverのビルドをダウンロードします。

- [CData API Server](https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/HandsOn/20180517/CDataAPIServer.exe)

ダウンロードされた「CDataAPIServer.exe」ファイルを起動します。下記のようなインストーラが起動するので、ライセンス契約書を確認した上で、デフォルト設定のままインストールを進めて完了させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/7bef9b05-1c22-3f03-0684-ed81d27d9661.png)


途中、APIServerの管理者(admin)のパスワードを設定する画面が表示されるので、設定したパスワードは手元に控えておいてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/65ccef01-5190-fa08-1c9d-983feffe222e.png)



インストールが完了するとWindows右下の通知エリアに青い雲のアイコンのCData APIServerに組み込まれているWebサーバが起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/67b4bdcf-6ea4-717f-d064-d686910c4b46.png)

また、デフォルトブラウザが起動してCData APIServerの管理コンソールへのログイン画面が起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/cd445564-8622-b4d3-9631-007de15b22b6.png)


# MySQLへの接続設定

CData APIServerの管理コンソールへのログイン画面で、ユーザ名「admin」、インストーラで設定したパスワードを入力して「サインイン」します。サインイン出来ると「情報」ページが表示されます。ライセンスが認証されていない旨のメッセージが表示されるので、「30日間の評価版をアクティベーションする」ボタンをクリックして、表示されるダイアログに「名前：」「Eメール」と入力し、「Terms and Conditions」を確認したら「評価版をアクティベーションする」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/62622643-6bc9-cff3-1ef4-fc7c0ef22bb4.png)


ブラウザのリフレッシュをして、プロダクトーに30日間の試用版（30 DAY TRIAL VERSION - 30 DAYS LEFT）が表示されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/af42638a-ba8e-03bd-75f1-7675d3fbd078.png)


「設定 > 接続」タブを開き、Databases内の「MySQL」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/75843caa-c57c-f1f5-bbea-ace288e0702b.png)

MySQLへの接続情報を設定します。設定後「Test Connection」ボタンをクリックして「The connection was successful.」が表示されればCDataAPIServerからMySQLへ接続出来たことになります。接続情報を「Save Changes」ボタンで保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/e616d39a-08ac-e6d0-ad15-f51e56a47986.png)


| 設定項目 | 設定値 |
|:-----------------|:------------------|
| Name | 任意（例では「MySQL」と設定） |
| Provider Class | 変更不可（「System.Data.CData.MySQL」と設定） |
| Settings Format | デフォルト値 「Property List」 |
| Server | MySQLがインストールされているマシン名、もしくは、IPアドレス（例では「localhost」と設定） |
| Database | MySQLのデータベース(例では「sakila」と設定) |
| User | MySQLへの接続ユーザ(例では「root」と設定) |
| Password | MySQLへの接続パスワード |

接続情報が保存されてConnectionsにMySQLへの接続情報が表示されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/b6c5228b-3894-0efe-30d4-fa909f78a5a5.png)


# APIエンドポイントの作成

「設定 > リソース」タブを開き、「リソースを追加...」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/1c80e987-7485-df97-5b37-a4a7a196b75b.png)


先の手順で作成したMySQLへのデータ接続設定を選択して「次へ」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/81c5cff5-d4ff-89ff-8534-4f0905f07358.png)


MySQL内のテーブルおよびビューが一覧として表示されます。今回は[sakila].[actor]テーブルを選択して「次」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/83cc0386-8ae9-6615-98f9-4b3c2c094f2e.png)


[sakila].[actor]テーブル内の項目一覧が表示されます。デフォルトでは、「操作：」に全てチェックが付与されており、GET（SELECT）、POST（INSERT）、PUT（UPDATE）、DELETE（DELETE）と全てのCRUD操作を許可しています。また、アクセスユーザも「*(全ユーザ)」と設定してます。今回は、このまま「保存」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/a306eaef-e7a9-acaf-d3ef-f48b878e7e08.png)


リソース一覧画面に戻り、「sakila_actor」リソースが追加されたことを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/1d56b8bb-c966-83c2-136b-835fde883ed1.png)


# APIアクセスユーザの作成

「設定 > ユーザー」タブに移動して、ユーザの「追加」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/2f64f034-2abb-d83b-d14b-d4208c8f4e25.png)


「ユーザーを追加」ダイアログが表示されます。ユーザー名を入力（任意）して、ユーザ毎の操作権限「GET（SELECT）、POST（INSERT）、PUT（UPDATE）、DELETE（DELETE）」全てにチェックを入れて「変更を保存」ボタンをクリックします。本画面で、一定時間内のAPIアクセス数制限（RateLimit）および同時接続数の制限を付与することも出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/74e2fcb8-bb42-50b5-b307-9182f4130a67.png)


ユーザ一覧画面に戻り、ユーザが追加されてAuthトークンが生成されたことを確認します。ユーザ名と本AuthトークンはAPIアクセス時に必要となりますの手元に控えておいてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/5edc8384-e9cc-a4f8-a1bf-b1512a4f4607.png)


# WebAPIへのアクセス

それでは、作成したWebAPIにアクセスしてみましょう。「API」タブを開くと、APIリファレンスが開きます。
左側にリソースの一覧が表示されますので、上の手順で追加したリソース「/api.rsc/sakila_actor」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/8c48c208-b1e3-d5af-1e3d-002283f3c56d.png)


右側にHTTPメソッド、および、各種プロパティや追加フォーマットの情報が表示されます。GETメソッドは、Webブラウザからリクエストを発行することができるので、ブラウザの新しいタブ、もしくは、Windowを開いてURLに「 http://localhost:8387/api.rsc/sakila_actor/ 」を入力して開いてみます。ブラウザのレスポンスとして、JSON形式で、MySQL内のactorテーブル内のデータが表示されれば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c942d19b-d761-726e-1d7e-ef6238eaa537.png)

管理コンソールと同一のWebブラウザからアクセスする場合は、ユーザ認証が必要ありませんが、新規ブラウザからだと認証が必要となります。ユーザ名に上記手順で作成したAPIアクセスユーザ名、パスワードにAuthトークンを入力してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/9a0a6ec7-a221-e92b-9951-6e6e9faf2e7b.png)

MySQLからWebAPIをを作成して、Webブラウザからアクセスすることが出来ました。