MySQL のデータをCData API Server でポチポチだけでREST API として公開する

ポイント&クリックだけでDB からREST API を作成できるCData API Server で、MySQL のデータからREST API を作ります。
![APIServerDiagram_JP4.png](https://qiita-image-store.s3.amazonaws.com/0/116843/64d8dc6a-2f98-c6a8-be33-44aa70641f67.png)

##CData API Server をインストール##
[http://www.cdata.com/jp/apiserver/](http://www.cdata.com/jp/apiserver/)
今回は、Windows 版で説明しています。
インストーラに従って、インストールを行ってください。
![as2.png](https://qiita-image-store.s3.amazonaws.com/0/116843/762bd93d-4eb1-a1c3-423f-6346c03d4d81.png)

Windows 版もしくはJava/Linux 版を選択します。
![スクリーンショット (707).png](https://qiita-image-store.s3.amazonaws.com/0/116843/6413010a-5c09-9da0-db79-dc1d21d1eea7.png)

インストール完了後にブラウザでAPI Server の管理コンソール画面が立ち上がります。インストール時に設定したadmin パスワードを入力してログインします。
![スクリーンショット (708).png](https://qiita-image-store.s3.amazonaws.com/0/116843/3faed0d6-1d97-2c08-aa96-7bbae30e2124.png)

管理コンソールで「情報」タブをクリックし、「30日の評価版をアクティベートする」をクリックします。
これで30日間の使用ライセンスが製品に設定されます。
![apiserverlicense.png](https://qiita-image-store.s3.amazonaws.com/0/116843/f7c0efb7-5e53-978a-27c7-3ed1bcd5e812.png)




##MySQL とAPI Server の接続を確立##
まずはこちらがデータソースとなるMySQL です。sakila というデモデータがあり、city というテーブルがあります。これをWeb API として公開します。
[デモデータの落とし方](https://dev.mysql.com/doc/index-other.html)
![as1.png](https://qiita-image-store.s3.amazonaws.com/0/116843/3db8a8ba-b6bc-849a-b357-0268eddde694.png)

API Server のコンソールをブラウザで開きます。Windows メニューからCData API Server を開くと自動的にブラウザが立ち上がります。admin アカウントでログインします。
![as4.png](https://qiita-image-store.s3.amazonaws.com/0/116843/ede50dd9-0d15-7b6a-bdd4-c56fa9ce051b.png)

［設定］タブから［接続］をクリックします。
接続可能なデータソースが並んでいます。表示されているデータソースだけでなく、[CData の対応する80以上のデータソース](http://www.cdata.com/jp/ado/)をAPI のデータソースとすることが可能です。
![as18.png](https://qiita-image-store.s3.amazonaws.com/0/116843/5febbc7f-6711-7446-5537-4c7e445d1614.png)

ここからMySQL のアイコンをクリックします。
MySQL の接続設定画面が開くので、接続情報を入力します。
- 名前：任意
- データベース：MysQL がプリセット
- Server、Port、User、Password をDB の情報に沿って入力
入力して［テスト接続］を試し、成功したら［保存］します。
![as5.png](https://qiita-image-store.s3.amazonaws.com/0/116843/7e0b104f-a628-7cc2-7d55-84b96aa25b11.png)

##API として公開するリソースの設定##
［設定］→［リソース］をクリックして、リソースを追加するウィザードを開きます。
先ほど作成した接続をクリックして、［OK］を押します。
![as6.png](https://qiita-image-store.s3.amazonaws.com/0/116843/e545fd20-87bd-8ffc-13b0-f7c64dc1bde0.png)

リソースとするテーブルのリストが表示されますので、選択して［OK］を押します。
![as7.png](https://qiita-image-store.s3.amazonaws.com/0/116843/b013c737-292c-00a2-77f6-324f8bf6225b.png)

続いて、テーブル内のカラムのリストが出るので、リソースとするカラムをチェックします。
![as8.png](https://qiita-image-store.s3.amazonaws.com/0/116843/46ee9904-eb6c-bf03-f075-001494699a4f.png)

これでAPI として公開するリソース設定が完了です。

##セキュリティ設定##
ユーザー認証の設定を行います。［設定］→［ユーザー］→［追加］でユーザーを追加します。
ユーザー名とGET、POST、PUT、DELETE などの権限を付与、レートリミットを設定します。
![as9.png](https://qiita-image-store.s3.amazonaws.com/0/116843/0b770a34-89e9-1252-f021-242449569d1a.png)
［保存］すると新しいユーザーが追加され、Auth トークンが発行されます。
![as10.png](https://qiita-image-store.s3.amazonaws.com/0/116843/c3d3fb3f-af5c-7932-ab4f-39b456c41df7.png)

これで設定は完了です。

##ブラウザからAPI を叩いてみる##
まずは、［API］タブからドキュメントを参照します。上のリソース設定のプロセスを行うとドキュメントは自動生成されます。
リソースの下のエンドポイント名をクリックするとAPI ドキュメント参照できます。
GET、POST、PUT、DELETE それぞれのURL およびJavaScript/CURL でのAPI のリクエスト方法やパラメータが記載されています。

![as12.png](https://qiita-image-store.s3.amazonaws.com/0/116843/3e532eb8-e5e3-eaea-df32-c73155512362.png)

GET の脇の　http://localhost:8387/api.rsc/RESOURSE/ をブラウザで叩いてみましょう。初回はAuth トークンの認証が要求されます。上で作成したユーザー名とAuth トークンを入力します。
たしかに、JSON 形式でMySQL 内のデータが返ってきました。
![as13.png](https://qiita-image-store.s3.amazonaws.com/0/116843/76bcb3e7-103b-7653-3ef0-35438a059bc0.png)

すこしJSON が見やすいPOSTMAN というツールからも試してみましょう。
![as14.png](https://qiita-image-store.s3.amazonaws.com/0/116843/671bdd84-e880-effa-8929-03308ada37ae.png)

このように、ポチポチとクリックするだけで、DB からREST API が作れてしまいました。