LoginSignup
2

More than 3 years have passed since last update.

posted at

updated at

CData API Server の管理用API利用手順

はじめに

CData API Server(以下、APIServer)は、ポイント&クリック操作だけで超高速にMySQLやSQLServerなどのデータベースからWebAPIを自動生成出来る製品です。
最新版のAPIServer(2018/07執筆時点)では、これまで、APIServerの管理者が、管理用コンソールのGUIから手動で行なっていたコネクション・リソース(テーブル)・ユーザーの追加などの作業を、REST-APIから実行出来るようになりました。本記事では、リソースの追加、および、リソースへのアクセス可能なユーザの付与を管理用APIから実行する方法をご紹介します。

前提

  • CData API Server(Java版)がTomcat上で動作していること
  • API実行用ソフトウェアPOSTMANが利用出来ること
  • DBVisualizerなどJDBCドライバ経由でのSQLを実行できるツールが利用出来ること

CData API Server(Java版)のTomcatへのデプロイ方法についてはこちらの1. APIServerのデプロイ環境を構築 【デプロイ機】をご覧ください。

CData APIServerのビルド

こちらのリンクのビルドをダウンロードしてご利用ください。

管理用APIへのアクセス権限の付与

デフォルトでは管理用APIはオフになっています。下記のweb.xmlファイルをエディタなどで開きます。

[tomcatroot]/webapps/apiserver/WEB-INF/web.xml

「<display-name>Restrict direct access to the Management API</display-name>」 を探し、「<auth-constraint>」に下記の通り「<role-name>cdata_admin」を追加します。これによって、「cdata_admin」ロールに属するユーザ(具体的には、adminユーザ)が管理用APIにアクセス出来るようになります。

  <security-constraint>
    <display-name>Restrict direct access to the Management API</display-name>
    <web-resource-collection>
        <web-resource-name>Management API</web-resource-name>
        <url-pattern>/admin.rsc/*</url-pattern>
        <url-pattern>/admin.rst/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>cdata_admin</role-name>
    </auth-constraint>
  </security-constraint>

Web.xmlを変更が完了したらTomcatを再起動してください。

次に、APIServerの管理コンソールにadminユーザでログインして、APIアクセス用の「admin」ユーザを「設定 > ユーザー」タブから追加します。

image.png

ユーザーまたはグループには、「admin」、Groupのチェックボックスは不活性、今回は、リソースの追加をPOSTメソッドで行うので、権限のPOSTにはチェックを入れてください。

ユーザを生成すると認証トークンが表示されます。管理用APIにアクセスするためには、この認証キーが必要となりますので手元に控えておりてください。

image.png

ついでに、(管理用APIではなく)データソースのリソースへのAPIアクセス用のユーザがなければ追加しておいてください。ユーザー名は任意のもので構いません。

image.png

接続・およびリソース画面の確認

今回は、既存の接続を使い、リソース(テーブル)を管理用APIで追加したいと思いますので、コネクションがなければ追加してください。また、リソース画面は、空の状態を前提に進めます。

接続画面の例 
image.png

リソース画面の例
image.png

管理用API仕様書へのアクセス

それでは、下記URLのように「amin.rst」を開いてみましょう。

http://localhost:8080/apiserver/admin.rst

下記のように、アクセスが拒否される場合は、web.xmlを再確認、および、Tomcatを再起動してみてください。

image.png

下記のように管理用のAPI仕様書のページが表示されれば成功です。

image.png

管理用APIから操作可能なリソースは左下のリンクから詳細を確認することが出来ます。

リソース メソッド 説明
ActionParameters GET / POST /PUT /DELETE アクション(ストアドプロシージャ)のパラメータ
Actions GET / POST /PUT /DELETE アクション(ストアドプロシージャ)
Connections GET / POST /PUT /DELETE 接続
Providers GET ADO.NETプロバイダ、もしくは、JDBCドライバ
ResourceColumns GET / POST /PUT /DELETE リソース(テーブル、ビュー)のカラム
Resources GET / POST /PUT /DELETE リソース(テーブル、ビュー)
Users GET / POST /PUT /DELETE ユーザー

管理用APIへのアクセス

リソースから「/admin.rsc/Connections」を選択して、右側にHTTPメソッドの詳細が表示されるので、GETメソッドのURLをクリップボードにコピーします。

image.png

同一ブラウザの新しいタブで本URLを開くことで、接続(データソースへの接続情報)の一覧を参照することが出来ます。

image.png

次に、リソースの追加を管理用APIから実行してみます。追加はPOSTメソッドとなるため、API実行用のソフトウェアとしてPOSTMANから実行します。

項目
メソッド POST
URL http://localhost:8080/apiserver/admin.rsc/Resources/
Headers_key1 x-cdata-authtoken
Headers_Value1 ************ (adminユーザの認証キーをセット)
Headers_key2 Content-Type
Headers_Value2 application/json;charset=utf-8
Body 別途下記に記載

headersサンプル

image.png

Bodyサンプル

image.png

        {
            "Operations": "GET",
            "Name": "actor",
            "tableName": "actor",
            "Description": "作成、更新、クエリ、および削除actor",
            "RestrictToRole": "",
            "RestrictToUser": "user01",
            "ConnectionName": "MySQL"
        }

RestrictToUserに本リソースにアクセス可能なAPIServerのユーザを指定することでリソース毎のアクセス権コントロールが可能となります。

実行します。レスポンスの「Status」が「201 Created」で、レスポンスBodyに追加された情報が表示されれば成功です。

image.png

それでは、APIServerの管理コンソールで「設定 > リソース」タブを開いて作成されたリソースを開いて確認してみます。APIでのリクエストBodyの内容で作成されたことを確認することが出来れば成功です。

image.png

JDBCドライバからの管理APIの実行

JDBCドライバのインストール

CData JDBC driver for APIServerをこちらのリンクからダウンロードしてください。Setup.zipを解凍してsetup.jarを実行してJDBCドライバをインストールします。

DBVisualizerの設定

DriverManagerにてインストールしたJDBCドライバをロードします。

image.png

※Windowsマシンの場合のデフォルトインストールパスは「C:\Program Files\CData\CData JDBC Driver for APIServer 2018J\lib」です。

Connectionを作成します。Driverは先のDriverManagerで作成したDriverを選択して、DatabaseURLには下記の情報をセットします。

jdbc:APIServer:URL=http://localhost:8080/apiserver/admin.rsc;AuthToken=*********;

※AuthTokenは「admin」ユーザの認証トークンをセットしてください。

Connectして、左側のConnectionリスト内の作成したコネクションを開いていくと「TABLE」に管理用APIのリソース一覧が表示されば、JDBCドライバから、APIServerの管理APIへの接続は成功です。

image.png

SQLCommanderを開いて、下記のSQLを実行してリソースを追加してみます。テーブル名や接続名は環境に合わせて任意のものに変更してください。

INSERT INTO Resources
 (Name, ConnectionName, Description, Operations, RestrictToRole, RestrictToUser, tableName) VALUES
 ('actor2', 'MySQL', '', 'GET', '', 'user01', 'actor');

SQLの実行がSuccessfulで完了することを確認します。

image.png

APIServerのリソース画面を開き、SQLのInsert文で追加したリソースが表示されていれば成功です。

image.png

まとめ

APIServerの管理用APIを使ってリソース(テーブル)の追加をAPIから実施しました。本APIやSQLをバッチプログラムなどで実行することでAPI管理業務を自動化することが出来ます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2