はじめに
今回はOracle Autonomous AI Database(ADB)のデータ・アクションを利用して、REST APIを作成してみたいと思います。
通常、データベースの情報を外部アプリケーションから利用する場合、APIを開発する必要がありますが、ADBではOracle REST Data Services(ORDS)を利用することで、データベースのテーブルやSQL、PL/SQLをREST APIとして公開できます。
また、ADBに標準で用意されているデータ・アクションを使えば、GUIからREST APIを作成できるため、比較的簡単にAPIを公開することができます。
今回はREST APIを作成し、OAuth 2.0による認証を設定した上で、実際にAPIを呼び出してデータの参照を行ってみます。
構成イメージ
■今回の検証の流れ
① 検証用テーブルの作成
② データ・アクションからREST APIを作成
③ OAuth 2.0の認証設定
④ アクセストークンの取得
⑤ REST APIによるデータの参照(POST)
■検証環境
| 項目 | 内容 |
|---|---|
| クラウド | Oracle Cloud Infrastructure(OCI) |
| データベース | Oracle Autonomous AI Database(ADB) |
| REST API | Oracle REST Data Services(ORDS) |
| 管理ツール | データ・アクション |
| 認証方式 | OAuth 2.0 Client Credentials |
■今回の構成
今回の構成は以下のようになります。
REST API Client
|
| ① Access Token取得
v
Oracle REST Data Services(ORDS)
|
| ② Access Token発行
v
REST API Client
|
| ③ REST API呼び出し
| Authorization: Bearer <token>
v
Oracle REST Data Services(ORDS)
|
| ④ SQL / PL/SQL実行
v
Autonomous AI Database(ADB)
|
| ⑤ データ参照
v
検証用テーブル
■参考ドキュメント
今回はORDSのOAuth 2.0機能を利用します。
OCI IAM Identity Domain側にOAuthアプリケーションを作成する構成ではありません。
◆目次
- 検証用テーブルの作成
- REST APIの作成
- OAuth 2.0の認証設定
- REST APIの動作検証
- REST APIを利用するメリット
- おわり
1. 検証用テーブルの作成
それでは早速、ADBにREST APIでアクセスするための検証用テーブルを作成します。
OCIコンソールから対象のADBを選択し、データ・アクションを起動します。
今回はREST APIを公開するためのデータベースユーザーを利用します。
なお、REST APIを利用するスキーマはORDSによるRESTアクセスが有効になっている必要があります。
今回はADMINで検証しますが、実際の利用では専用のアプリケーションスキーマを作成することをおすすめします。
[1] テーブルの作成
データ・アクションからSQLを選択します。
今回は以下のSQLを実行して検証用テーブルを作成します。
CREATE TABLE DEMO_ITEMS (
ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
TITLE VARCHAR2(100),
MEMO VARCHAR2(500),
CREATED_AT TIMESTAMP DEFAULT SYSTIMESTAMP
);
テーブルには以下の4つのカラムを用意しました。
| カラム | 説明 |
|---|---|
| ID | レコードを識別するID |
| TITLE | タイトル |
| MEMO | メモ |
| CREATED_AT | 登録日時 |
続いて、確認用のデータを登録します。
INSERT INTO DEMO_ITEMS (TITLE, MEMO)
VALUES ('TEST01', 'REST API TEST');
COMMIT;
登録が完了したらSELECT文で確認します。
SELECT * FROM DEMO_ITEMS;
これで準備完了です。
2. REST APIの作成
続いて、データ・アクションからREST APIを作成してみます。
データ・アクションにはREST APIを管理するための「RESTワークショップ」が用意されています。
RESTワークショップでは主に以下の3つを定義することでREST APIを作成できます。
| 項目 | 説明 |
|---|---|
| Module | REST APIの基本パスを定義 |
| Template | リソースのURIを定義 |
| Handler | HTTPメソッドと実行処理を定義 |
例えば、今回作成するREST APIは以下のような構成になります。
Module
api01
|
+-- Template
search/
|
+-- POST Handler
SELECT文を実行
[1] RESTワークショップを開く
データ・アクションのメニューからRESTを選択します。
RESTワークショップが表示されたら、モジュールを選択します。
[2] モジュールの作成
「モジュールの作成」を選択して新しいモジュールを作成します。
今回は以下のように設定します。
モジュール名 : api01
ベース・パス : /api01/
権限によって保護済み:使用可能な権限
モジュールはREST APIの基本となるURLを定義するものです。
登録したモジュールが表示されない場合は画面を更新(F5)してください。

[3] テンプレートの作成
続いて作成したモジュールにテンプレートを追加します。
今回は以下のように設定します。
URIテンプレート : search
これでREST APIのURLは以下のような構成になります。
https://<ADBホスト名>/ords/admin/api01/search
[4] POSTハンドラの作成
まずはデータを参照するためのPOST APIを作成します。
作成したテンプレートからハンドラを追加します。
以下のように設定します。
メソッド : POST
ソース: (以下)
DECLARE
l_json CLOB;
BEGIN
SELECT json_object(
'id' VALUE id,
'title' VALUE title,
'memo' VALUE memo,
'created_at' VALUE TO_CHAR(created_at,
'YYYY-MM-DD"T"HH24:MI:SS')
)
INTO l_json
FROM demo_items
WHERE id = :id;
htp.p(l_json);
:status_code := 200;
EXCEPTION
WHEN NO_DATA_FOUND THEN
:status_code := 404;
htp.p('{"message":"Data not found"}');
END;
この設定によって、REST APIがPOSTリクエストを受け取ると、指定したSELECT文が実行されます。
実行結果はJSON形式で返されます。
これでPOSTのREST APIが作成できました。
3. OAuth 2.0の認証設定
続いて、作成したREST APIにOAuth 2.0による認証を設定します。
ORDSではOAuth 2.0を利用してREST APIへのアクセスを制御できます。
今回はClient Credentials方式を使用します。
Client Credentials方式は、Client IDとClient Secretを使用してアクセストークンを取得する方式です。
REST APIを呼び出す際にアクセストークンを指定することで、認証されたクライアントからのアクセスのみを許可できます。
[1] ロールの作成
RESTワークショップのセキュリティメニューからロールを選択します。
新しいロールを作成し、以下の名前を設定します。
ロール名 : api_role
ロールはREST APIにアクセスできるクライアントを制御するために利用します。
[2] 権限の作成
続いて権限を作成します。
今回、権限は以下のように設定します。
保護対象のモジュールには、先ほど作成したapi01を指定します。
権限はREST APIへのアクセスを制限するための設定です。
[特恵定義]タブ
ラベル : api_privilege
名前 : api_privilege
説明 : api_privilege
[ロール]タブ
ロール : api_role
[保護されたモジュール]タブ
モジュール: api01
ロールと権限を組み合わせることで、特定のロールを持つクライアントだけが対象のREST APIへアクセスできるようになります。
[3] OAuthクライアントの作成
続いてOAuthクライアントを作成します。
今回は以下のように設定します。
作成したOAuthクライアントに必要なロールを割り当てます。
[特恵定義]タブ
付与タイプ : CLIENT_CRED
名前 : api_client
説明 : api_client
サポート電子メール : (ご自身のメールアドレス)
[ロール]タブ
ロール : RESTful Services
: api_role
作成が完了したら、Client IDとClient Secretを書き留めておきます。
Client ID : xxxxxxxxxx
Client Secret : xxxxxxxxxx
これらの情報はアクセストークンを取得する際に利用します。
特にClient Secretは認証情報となるため、外部に公開しないよう注意してください。
Client Secretは初回のみ表示されますが、ローテーションで再発行できます。

4. REST APIの動作検証
それでは実際にREST APIを呼び出してみます。
今回はREST APIクライアントからHTTPリクエストを送信して動作を確認します。
最初にOAuth 2.0のアクセストークンを取得します。
[1] アクセストークンの取得
ORDSではOAuth 2.0のToken Endpointが用意されています。
今回のエンドポイントは以下のようになります。
(今回はスキーマ名がadminになっています)
https://<ADBホスト名>/ords/admin/oauth/token
以下のリクエストを送信します。
[Method]
POST
[Endpoint]
https://<ADBホスト名>/ords/admin/oauth/token
[Header]
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <Base64認証値>
[Body]
grant_type=client_credentials
Authorizationヘッダーには、Client IDとClient Secretをコロンで連結した値をBase64エンコードして指定します。
例えば以下のようになります。
Client ID : ABCDE
Client Secret : 12345
この場合、連結する文字列は以下になります。
ABCDE:12345
Base64エンコードすると以下になります。
QUJDREU6MTIzNDU=
したがって、Authorizationヘッダーには以下を指定します。
Authorization: Basic QUJDREU6MTIzNDU=
なお、Base64は暗号化ではありません。実際のClient Secretは安全に管理してください。
正常に実行されると、以下のようなレスポンスが返ってきます。
{
"access_token": "xxxxxxxxxxxxxxxx",
"token_type": "bearer",
"expires_in": 3600
}
ここで取得したaccess_tokenをREST APIの呼び出しに使用します。
[2] POST APIによるデータ参照
それでは先ほど作成したPOST APIを呼び出してみます。
エンドポイントは以下になります。
https://<ADBホスト名>/ords/admin/api01/search
以下のリクエストを送信します。
[Method]
POST
[Endpoint]
https://<ADBホスト名>/ords/admin/api01/search
[Header]
Content-Type: application/json
Authorization: Bearer <アクセストークン>
[Body]
{
"id": 1
}
先ほど取得したアクセストークンをAuthorizationヘッダーに設定します。
正常に実行されると、データベースに登録されている情報がJSON形式で返されます。
レスポンスは以下のようなイメージになります。
{
"id": 1,
"title": "TEST01",
"memo": "REST API TEST",
"created_at": "2026-10-27T08:49:38"
}
このように、SQLの実行結果をREST APIから取得できました。
5. REST APIを利用するメリット
今回の検証では、ADBのデータ・アクションからREST APIを作成しました。
個人的には、SQLやPL/SQLを利用して比較的簡単にREST APIを公開できる点が便利だと感じました。
例えば、以下のような場面で活用できると思います。
- 外部アプリケーションからADBのデータを参照する
- 外部システムからADBへデータを登録する
- SQLやPL/SQLをREST APIとして公開する
- 他のクラウドサービスとのデータ連携に利用する
通常は別途APIサーバーを開発する必要があるケースでも、ORDSを利用することでデータベース側に定義した処理をREST APIとして公開できます。
また、OAuth 2.0を利用することで、REST APIへのアクセスを認証・認可によって制御できます。
ただし、REST APIとして公開するSQLやPL/SQLには適切な権限設定や入力値の検証が必要です。
特に更新系のAPIを公開する場合は、アクセスできるクライアントを必要最小限に制限することが重要になります。
おわり
今回はOracle Autonomous AI Databaseのデータ・アクションを利用してREST APIを作成してみました。
データ・アクションのRESTワークショップを利用することで、SQLやPL/SQLをREST APIとして公開できることが確認できました。
また、OAuth 2.0による認証設定を組み合わせることで、アクセストークンを利用したREST APIへのアクセスも実現できました。
今回はPOSTによるデータ参照を試しましたが、ORDSではPUTやDELETEなどのHTTPメソッドにも対応しているため、用途に応じてさまざまなREST APIを作成できます。
ADBのデータを外部アプリケーションやサービスと連携する場合に、活用できる機能だと思います。



























