無料の API 自動生成ツールを使って、Excelファイルから REST API を生成してみる:CData API Server
今月はじめに CData API Server というAPIの自動生成ツールで無料版・freeのライセンスがリリースされました!
今日はこの CData API Server を使ってExcel ファイルから REST API を生成する方法を解説したいと思います。(ちなみに機能的にはExcel だけでなく、MySQL などのRDBからもAPIの生成が可能です。というかそっちの方がメインです)
ちなみに今回作ったAPIは以下の内容で公開しています。
ID:user
Token:7y3E6q4b6V1v9f0D2m9j
CData API Server って何?
CData API Server はMySQLやExcelといった様々なデータソース(その数150種類以上!)をもとにOData規格で標準化されたREST ful なAPIを生成するツールです。
どのデータソースからどのデータを公開するのか? をポチポチとクリックしていくだけで、以下のようなAPIドキュメントと一緒にGET/POST/PUT/DELETE をサポートしたREST APIを自動で生成します。
あとはいろんなクライアント・プログラムから使ってもらう感じです。
CData API Server はもともと年間有償ライセンスで提供されていたのですが、最近のアップデートで「SQLite」「Apache Derby」「MySQL」「Excel」のデータソースでの利用が無料になりました!
https://www.cdata.com/jp/apiserver/#purchase
※注意:企業・個人のインターナル・マイクロサービスとしての利用のみ無料で、外部公開・パブリックAPIにする場合は有償ライセンスが必要になります。
なので、今回の記事ではExcelをデータソースにしたAPIの生成方法を解説したいと思います。
また、記事の後半ではAPI Serverのインストール・セットアップ方法と無料版のライセンス購入方法についても記載しています。特に難しいところは無いかな~と思うのですが、よくわからなかった場合は参考にしてみてください。
こんな REST API を生成するよ
さて、Excelから REST APIを生成するわけですが、元になるExcelファイルが無いと始まりません。なので今回は以下のURLで公開されている O'Reilly の書籍リストを元にExcelファイルを作ってみました!
https://www.oreilly.co.jp/catalog/
ここからExcelにコピーアンドペーストでベローっと貼り付けて、リンク先のURLを抽出し、ついでに後々のことを考えて画像URLもISBNを元に生成しています。
最終的に出来上がったExcelファイルはこちらです。以下のURLで公開しているので、使ってみてください。
実施手順
以下のような手順でAPIが作成できます。
ざっと全体像がわかるGIFアニメも作成しておいたので、合わせて参考にしてみてください。
1. Excel データソースの接続設定を追加する
それではAPIを作っていきましょう。「接続」→「接続」をクリックすると、データソースとして登録できるサービスの一覧が表示されるのでその中から Excel を選択します。
なお、デフォルトではExcelデータソースが使えないので、 こちら の手順を元にコネクタをインストールしておきます。(私の環境は色々と試しているので、いっぱいデータソースがあります)
接続情報を入力する画面では、Excelファイルのファイルパスを入力します。
入力後「接続テスト」をクリックし、接続成功のメッセージが出たら、設定を保存します。
これで、以下のように接続情報が構成されればOKです。
2. ExcelのシートをAPIリソースとして追加する
次に Excel のどのシートを REST API として生成するのかの設定を行います。
「リソース」タブに移動し「リソースを追加」をクリックします。
まず先程作成した対象の接続情報を選択し
次にExcelファイルに含まれるシートを選択します。今回のExcelファイルは1シートしかないので、以下のように一つだけがリソースとして追加できます。複数シートを一括でAPI化することも可能です。
最後に対象のリソース名(URLリソース名になります)と、どの操作を許容するのか(参照・作成・更新・削除)、どのカラムを公開するのか、を選択し保存するだけでAPIの作成が完了します。
以下のようにリソースが保存されていればOKです。
3. アクセス用のユーザーを追加する
最後にAPIアクセス用のユーザーを作成します。このユーザー情報とユーザーの認証トークンを使ってAPIアクセスを行います。
「ユーザー」タブに移動し「追加」ボタンをクリック
ユーザー名と有効期限(0であれば永続です)、操作権限やリクエストリミットなどを設定し、保存するだけでOKです。
ユーザーが作成されると、以下のように認証用トークンも自動生成されるので、これを控えておきましょう。
4. 生成されたAPIに対してアクセスする
それでは作成したAPIにアクセスしてみましょう。APIタブに移動すると、作成されたAPIの仕様を確認することができます。
GET/POST/PUT/DELETEのエンドポイントがそれぞれ実装されていて、各メソッドに応じて、データの参照・作成・更新・削除が実施可能です。
GETのリクエストURLをそのままブラウザに貼り付けると、レスポンスがJSONで返ってくることがわかります。
もちろん、POSTMANなどのクライアントからも実行可能です。先程作成した認証Tokenをヘッダーx-cdata-authtokenに付与してリクエストすることでデータの取得ができます。
GET /api.rsc/CData_Excel_OReillyBookList/ HTTP/1.1 Host: localhost:8387 x-cdata-authtoken: 1q0E5n7v8V1k4r1U5g0e
ちなみにCData API Server は各クエリパラメータをサポートしてます
$select で取得したい項目 $filter でフィルタリング $orderby で並び替え $top で上位N件取得等。
例えば2000円以下の本のタイトルと値段を取得して、値段安い順に並び替えて、TOP5を表示だと以下のようなURLクエリパラメータで取得することができます。
http://localhost:8387/api.rsc/OReillyBookList/?$select=Price,Title&$filter=Price le 2000&$orderby=Price&$top=5
もちろん、以下のようにPSOTリクエストでリソース作成を実行すると
POST /api.rsc/CData_Excel_OReillyBookList HTTP/1.1 Host: localhost:8387 x-cdata-authtoken: 1q0E5n7v8V1k4r1U5g0e Content-Type: application/json { "Price": "1100", "Title": "新しい本" }
Excelファイルに直接新しいデータが挿入されます。
なので、Excelファイルをデータソースとした簡単なAPIベースのアプリケーションも作成できますね。
補足
以下、API Serverのダウンロード方法や補足情報、ライセンスの購入、Excelデータソースの有効化の方法をまとめておきました。
Excelデータソースだけちょっと特殊な手順が必要なので注意してください。
API Server のダウンロード・インストール方法
CData API Server は以下のURLから入手できます。
https://www.cdata.com/jp/apiserver/
画面中央(もしくは右上)のダウンロードをクリックしてください。
今回はWindows版で進めますが、Corss-Platform版であればLinux・Unixの環境でも動作させることが可能です。
必要事項を記入し、ダウンロードをクリックするとダウンロードが開始されます。
ダウンロードが完了し、インストーラーを立ち上げるとセットアップ用のダイアログが表示されます。ほとんどデフォルトのまま進めていけますが、一部最初に管理者用のパスワードを設定するところがあるので注意してください。
ライセンス契約書を読み、同意するをクリック
インストール先フォルダは特に任意の場所が無ければ、デフォルトのままで大丈夫です。
コンポーネントはそのままデフォルトで進めます。
ここも次へをクリックします。
ここの画面でCData API Serverにログインするための管理者パスワードを設定します。(APIアクセスのパスワード・認証トークンとは別なので注意してください。)
これで準備完了です。インストールを進めます。
インストール後「完了」をクリックすることで、API Serverが自動的に立ち上がります。
先程のパスワードとユーザー名「admin」でログインできます。
以下のようにステータスダッシュボードが表示されればOKです。ただ、まだライセンスは設定されていない状態なので、次の章で無償版ライセンスを入手します。(ちなみに30日間の上位ライセンスによるトライアルはそのまま実施可能です。)
無償(Free)版ライセンスの入手方法
それではAPI Serverに設定するライセンスを入手してみたいと思います。
※ちなみに、サクッとフル機能を試したい場合は、以下の30日間トライアルの方が簡単です。こっちだと、SQL Server、PostgreSQL、OracleやMongoDBといった他のデータソースのAPI生成も試すことができます。
まず、以下のURLにアクセスし、無償版の申し込みをクリックします。
https://www.cdata.com/jp/apiserver/#purchase
ショッピングカート画面に行くので、内容を確認し「注文手続きへ」をクリックします。
オンライン注文書の画面で会社名などを入力し「注文を送信する」をクリックすれば、
無償版ライセンスの購入が完了です。
以下のように注文完了メールが届き、1~2営業日以内にライセンスも発行されて届きます。
ライセンスが届いたら、API Serverの管理画面、「情報」タブから「新しいライセンスをインストール」をクリックし、ライセンスを登録します。
名前とメールアドレス、メールで送られてきたプロダクトキーを入力し、Terms and Confitionsを確認の上、「ライセンスをインストール」をクリックすればOKです。
無事ライセンスが有効化されました。
API Server にExcelデータソースの機能を追加する方法
前述の通り、API Server はデフォルト状態でExcelをデータソースとして扱うことができません。
別途 CData ADO.NET Provider から Excel ADO.NET Providerを入手して、インストールする必要があります。
Excel ADO.NET Providerは以下のページから入手できます。
https://www.cdata.com/jp/drivers/excel/ado/
ダウンロードは評価版をクリックしてください。
必要事項を記入の上、ダウンロードをクリックすることでインストーラーを入手できます。
インストーラーを実行すると、セットアップ用ダイアログが表示されます。特に特別な構成はなく、そのまますべてデフォルトで進めていくだけで大丈夫です。
最初にライセンス契約書は確認し「同意する」をクリックしておきます。
インストーラー先を選択し
コンポーネントを選択します。必須なのはADO.NET Providerのみですが、デフォルトのままでも大丈夫です。
スタートメニューフォルダを選択し
ツールボックスもデフォルトで大丈夫です。
あとは「インストール」をクリックすればOKです。
インストール完了後、API Serverを再起動し、接続画面に移動すると「Excel」データソースが使えるようになります。
ちなみに無償版の範囲外ですが、CSVやXMLなどのファイルやMongoDBやRedisなどもAPIのデータソースとして、このようにCData ADO.NET Providerを入手することで対応可能です。
参考情報
CData API Server で REST ful APIを作って、SwaggerHub でさくっと API ドキュメントを公開する
CData API Server(Windows版)を使ってKintoneのWeb APIをOData形式に変換する(API Server拡張ドライバー追加方法)
Azure SQL DatabaseをCData API ServerでWeb API(OData)アクセスできるように構成してみる その1 Web Apps構成編