Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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管理業務を自動化することが出来ます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした