はじめに
本資料は、主要なデータベースからREST API を生成&公開することができるCData API Server のハンズオン資料です。
CData API Serverとは
CData API Server は、3ステップの操作で、主要なデータベースからOData 規格のREST API をノーコードで生成することができるアプリケーション製品です。
本製品を利用することにより、標準的なOData 規格のREST API を外部に公開し、CData API Server が間に入ることによって、自社内のRDB のデータをセキュアにSaaS アプリケーションやクライアントに繋げることができます。
本ハンズオンで実現すること
本ハンズオンでは、下記のシナリオを実現します。
- MySQL からREST API を生成
- CData API Server で生成したREST API にWeb ブラウザからアクセス
- CData API Server で生成したREST API にPostman からCRUD 操作でアクセス
事前準備
※CData API Server のハンズオンセミナーにご参加される方は、弊社より準備しているハンズオン環境のマシンをご利用いただきます。ハンズオン環境のマシンは、下記の事前準備を終えておりますので、スキップいただいて構いません。
MySQL
インストール:MySQL
MySQL Workbenchを起動して、MySQLへ接続して、 サンプルの「sakila」データベース内の「actor」テーブルのデータを表示できることを確認します。
Postman
インストール:Postman
Windows/ Mac/ Linux のいずれかのOSで事前にダウンロードしてアカウント作成を実施してください。
CData API Server
インストール:CData API Server の30日間無償トライアル版
CData API Server は、マルチプラットフォーム(Windows / MacOS / Linux / AWS AMI版)で動作します。CData API Server 製品のシステム要件はこちらをご参照ください。
https://cdn.cdata.com/help/BWH/jp/odata/Installing-API-Server.html
はじめに、CData API Server 無償評価版の申し込みフォームにいき、必要情報を入力後、ダウンロードボタンをクリックしてください。
CData API Server のインストーラをダウンロードします。「CDataAPIServer.exe」 がダウンロードされますので、実行してインストーラを起動します。ライセンス契約書を確認した上でウィザードに従いインストールをしてください。
ウィザードに従っていくと、API Server の管理者(admin)のパスワードを設定するタイミングがありますので、設定したパスワードはお手元に控えておきましょう。
「インストールが正常に完了しました。」が表示されればインストールが完了です。
デフォルトでブラウザが立ち上がりましたら、ユーザー名「admin」、先ほどインストーラで設定した管理者パスワードを入力してログインします。
サインイン後、[情報] タブより、ライセンス情報に進み、30日の評価版をアクティベートします。
「30日の評価版をアクティベート」をクリックして、名前とEメールを入力後、「Terms and Conditions」を確認しましたら、評価版をアクティベートします。
アクティベーションが完了すれば、トライアル期間が30日間であることを「ライセンス情報」から確認できます。これでCData API Server の準備ができました。
1. MySQLからREST API を生成
1.1 MySQL との接続
「設定 > 接続」タブを開き、「+接続を追加」からDatabases 内の「MySQL」を選択します。
MySQLへの接続情報を設定します。
設定項目 |
設定値 |
Name |
任意(例では「MySQL」と設定) |
Provider Class |
変更不可(「System.Data.CData.MySQL」と設定) |
Setting Format |
デフォルト値 「プロパティリスト」 |
Server |
MySQLがインストールされているマシン名、もしくは、IPアドレス(例では「localhost」と設定) |
Port |
3306 |
Database |
MySQLのデータベース(例では「sakila」と設定) |
User |
MySQLへの接続ユーザ(例では「root」と設定) |
Password |
MySQLへの接続パスワード |
設定値を入力後、「接続テスト」をして「接続に成功しました」が表示されれば、CData API ServerからMySQLへ接続が出来たことになります。接続成功後、「変更を保存」ボタンをクリックしてください。
MySQLへの接続情報がCData API Server に保存できていることを確認できました。
1.2 API エンドポイントの作成
「設定>リソース」タブを開き、「リソースを追加…」をクリックします。
先ほどの手順で作成したMySQL へのデータ接続設定(任意の名前)を選択して「→次」を選択します。
API のリソース(テーブルおよびビュー)が一覧として表示されますので、REST API として公開したいテーブルを選択します。今回は[sakila].[actor]を選択します。
[sakila].[actor]テーブル内の項目一覧が表示されます。「オペレーション:」に全てチェックを付与して、GET(SELECT)、POST(INSERT)、PUT(UPDATE)、DELETE(DELETE)とCRUD操作を許可をします。今回は、このまま「保存」ボタンをクリックします。
リソース一覧画面に戻ります。「sakila_actor」リソースが追加されたことを確認できました。
1.3 API アクセスユーザの作成
「設定 > ユーザー」タブに移動して、ユーザの「追加」ボタンをクリックします。
「ユーザーを追加」ダイアログが表示されます。ユーザー名(任意)を入力して、ユーザ毎の操作権限「GET(SELECT)、POST(INSERT)、PUT, MERGE、PATCH(UPDATE)、DELETE(DELETE)」全てにチェックを入れます。加えて「アクティブ」にもチェックを入れてください。そのあと、「変更を保存」ボタンをクリックします。
※一定時間内のAPIアクセス数制限(RateLimit)および同時接続数の制限を付与することも出来ます。
ユーザ一覧画面に戻ります。ユーザが追加され、Authトークンが生成されたことを確認してください。ユーザ名と本AuthトークンはAPIアクセス時に必要となりますの手元に控えておいてください。
2. CData API Server で生成したREST API にWebブラウザからアクセス
2.1 API ドキュメントを確認する
それでは、生成したREST API にアクセスしてみましょう。「API」タブを開くと、APIドキュメントが開きます。左側にリソースの一覧が表示されますので、追加したリソース「/api.rsc/sakila_actor」を選択してください。
右側にHTTPメソッド、および、各種プロパティや追加フォーマットの情報が表示されます。GETメソッドは、Webブラウザからリクエストを発行することができるので、ブラウザの新しいタブ、もしくは、Windowを開いてURLに「 http://localhost:8153/api.rsc/sakila_actor/ 」を入力して開いてみます。
2.2 Web ブラウザからREST API にアクセスする
ブラウザのレスポンスとして、JSON形式で、MySQL内のactorテーブル内のデータが表示されました。これで、REST API 生成に成功したことを確認できました。
ちなみに、管理コンソールと同一のWebブラウザからアクセスする場合は、ユーザ認証が必要ありませんが、新規ブラウザからだと認証が必要となります。その場合には、ユーザー名に上記手順で作成した【APIアクセスユーザ名】、パスワードに【Authトークン】を入力します。
3. CData API Server で生成したREST API にPostmanからアクセス
3.1 データの取得(GET)
ここからは、先の手順で作ったREST API をPostman から使ってみます。まずは「Send an API request」をクリックしてください。
CData API ServerのAPIタブを開き、作成したAPIのリソース(例:sakila_actor)のHTTPメソッドのGETのURLエンドポイント(例: http://localhost:8153/api.rsc/sakila_actor/)を手元に控えておきます。
また、「設定 > ユーザー」タブで作成した、ユーザのAuthトークンを控えておきます。権限が、GET,POST,PUT,MERGE,PATCH,DELETEのメソッドが付与されていることをここで確認してください。
右側のNewTabでHTTPメソッドが「GET(取得)」となっていることを確認して、先の手順で手元に控えたURLエンドポイント(例:http://localhost:8153/api.rsc/sakila_actor/ )をセットします。URLの下の「Headers」を開き、HTTPリクエストのHeaderに指定するAuthトークンの情報をセットします。
Key |
Value |
x-cdata-authtoken |
上記手順で取得したAuthトークンの値 |
青い「Send」ボタンをクリックしてリクエストを投げてみます。下部のレスポンスの「Body」に、MySQLの該当テーブル(例では「actor」)に格納されているデータがJSON形式のデータとして表示されれば成功です。
3.2 データの追加(POST)
CData API ServerのAPIタブを開き、作成したAPIのリソース(例:sakila_actor)のHTTPメソッドのPOSTのURLエンドポイント(例:http://localhost:8153/api.rsc/sakila_actor/ )を手元に控えておきます。また、POSTのレコードを開くとJavascriptからの呼び出しサンプルが表示されます。
下記例の青文字部分が、MySQLに登録する値でJSON形式のデータとなります。
※「Javascript」を「cURL」に切り替えるとコマンドラインcURLでの実行サンプルが表示されるようになっています。
「actor_id」と「last_update」は自動でセットされる項目なので「first_name」「last_name」のみのjSONデータを準備します。
{
"first_name": "テスト名1", "last_name": "テスト姓1"
}
|
項目 |
値 |
HTTPメソッド |
POST |
Request URL |
http://localhost:8153/api.rsc/sakila_actor/ |
Headersタブ |
上記GETの手順と同じAuthトークンの情報をセット |
Bodyタブ |
「raw」を選択、 「Text」から「JSON」に変更、 上記のJSONデータをセット |
青い「Send」ボタンをクリックしてリクエストを投げてみます。Responseの「Status:201 created」で、下部のレスポンスの「Body」として登録したJSON形式のデータとして表示されれば成功です。
MySQL Workbenchを開き、該当テーブルのデータを再度取得してデータが登録されたか確認してみます。
3.3 データの更新(PUT)
再び、CData API ServerのAPIタブを開き、作成したAPIのリソース(例:sakila_actor)のHTTPメソッドのPUTのURLエンドポイント(例: http://localhost:8153/api.rsc/sakila_actor(actor_id) )を手元に控えておきます。「actor_id」部分は更新するレコードの「actor_id」(例: http://localhost:8153/api.rsc/sakila_actor(201) )をセットしてください。
更新するJSONデータを準備します。
{
"first_name": "CData", "last_name": "太郎"
}
|
項目 |
値 |
HTTPメソッド |
PUT |
Request URL |
http://localhost:8153/api.rsc/sakila_actor(actor_id) |
Headersタブ |
上記GETの手順と同じAuthトークンの情報をセット |
Bodyタブ |
「raw」を選択、 「Text」から「JSON」に変更、 上記のJSONデータをセット |
青い「Send」ボタンをクリックしてリクエストを投げてみます。Responseの「Status:200 OK」で、下部のレスポンスの「Body」として更新したJSON形式のデータとして表示されれば成功です。
MySQL Workbenchを開き、該当テーブルのデータを再度取得してデータが更新されたか確認してみます。きちんと更新されていますね。
3.4 データの削除(DELETE)
再び、CData API ServerのAPIタブを開き、作成したAPIのリソース(例:sakila_actor)のHTTPメソッドのDeleteのURLエンドポイント(例: http://localhost:8153/api.rsc/sakila_actor(actor_id))
を手元に控えておきます。「actor_id」部分は削除するレコードの「actor_id」(例:http://localhost:8153/api.rsc/sakila_actor(201) )をセットしてください。
項目 |
値 |
HTTPメソッド |
DELETE |
Request URL |
http://localhost:8153/api.rsc/sakila_actor(actor_id) |
Headersタブ |
上記GETの手順と同じAuthトークンの情報をセット |
Bodyタブ |
「raw」を選択、 「Text」から「JSON」に変更、 上記のJSONデータをセット |
青い「Send」ボタンをクリックしてリクエストを投げてみます。Responseの「Status:204 No Content」が表示されれば成功です。
MySQL Workbenchを開き、該当テーブルのデータを再度取得してデータが削除されたか確認してみます。
PostmanからのHTTPリクエストでMySQLのデータのCRUD操作を行うことができました。
おわりに
本資料では、MySQLからREST API をつくり、そのつくったAPIにWebブラウザおよびPostmanからアクセスする手順をご紹介しました。CData API Serverは30日間の無償評価版ライセンスがございます。是非、実機にてCData API Server が持つシンプルかつ超高速なAPI 生成をご体験ください。
関連コンテンツ