1 Oracle REST Data Servicesの開始

このチュートリアルは、Oracle REST Data Servicesを使用して迅速にRESTfulサービスを開発し始められることを目的としています。

1.1 RESTfulサービスのスタート・ガイド

前提条件

このチュートリアルのステップを実行する前の前提条件を次に示します。

  • Oracle REST Data Servicesをインストールしてあり、現在サポートされているバージョンのOracleデータベースを使用するように構成してあることを確認します。
  • 現在サポートされているバージョンのクライアント・アプリケーションをインストールしてあることを確認します。

    このチュートリアルでは、次のクライアントを使用してRESTfulサービスを作成します。

    • Oracle Database Actions
    • Oracle SQLcl

      ノート:

      SQLclの最新バージョンは、次のいずれかからダウンロードできます。
      • SQLclダウンロード
      • Homebrewを介して、コマンドbrew install --cask sqlclを使用します。その他のSQLclインストール情報は、SQLcl Homebrewにあります。
    • Oracle SQL Developer
    • WebブラウザでJSONを表示できるようにする、ブラウザ拡張機能をインストールしてください。一般的なブラウザ拡張機能には、次のいずれかがあります。

    このチュートリアルでは、次のことが前提となっています。

    • Oracle REST Data Servicesがインストールされており、次のサーバー、ポートおよびコンテキスト・パスで構成されていること: localhost:8080/ords/
    • Oracle REST Data Servicesがスタンドアロン・モードで実行されていること
    • Oracle REST Data Servicesのインストールが次の属性で基本接続タイプを使用して実行されたこと:
      • サーバー: localhost
      • ポート: 1521
      • サービス名: ORCLPBD1

    このチュートリアルの例では、Oracle REST Data Servicesがインストールされており単一インスタンス・データベースまたはプラガブル・データベース(PDB)で構成されていることが前提となっています。このチュートリアルの例と図では、そのPDBをORCLPDB1と呼んでいます。

RESTfulサービスの作成のためにこのチュートリアルで使用するクライアント・アプリケーション

このチュートリアルの例では、次のクライアント・アプリケーションを使用します。

  • Oracle Database Actions
  • SQLcl

Webブラウザの要件

現在サポートされているWebブラウザをすべて示すリストは、OracleソフトウェアでのWebブラウザのサポート・ポリシーを参照してください。

1.1.1 Oracle SQLclを使用したRESTfulサービスの作成

この項では、Oracle SQLclを使用してRESTfulサービスを作成する手順を説明します。

ノート:

このチュートリアル内の次の手順は、指定されている名前をスキーマおよびデータベース・オブジェクトに使用して実行してください。このチュートリアルを完了した後に、かわりのスキーマ名およびデータベース・オブジェクト名を使用して同じ手順をもう一度実行します。
1.1.1.1 新しいデータベース・ユーザーの作成とスキーマのREST対応化

新しいユーザーを作成するには、次の手順を実行します。

  1. SQLclを使用して、管理者として、またはDBAロールがあるアカウントでデータベースに接続します。

    図1-1 管理者またはDBAロールがあるユーザーとしてのデータベースへの接続



  2. 次のコマンドを実行して、必要な権限、ロールおよび表領域がある新しいORDSTESTユーザーを作成します。
    CREATE USER ORDSTEST IDENTIFIED BY <password>;
    GRANT "CONNECT" TO ORDSTEST;
    GRANT "RESOURCE" TO ORDSTEST;
    GRANT UNLIMITED TABLESPACE TO ORDSTEST;
    

    図1-2 必要な権限、ロールおよび表領域があるORDSTESTユーザー



1.1.1.2 スキーマのREST対応化
スキーマをREST対応にするには、ORDSTESTユーザーとしてデータベースに接続してから、次のPL/SQLプロシージャを実行します。
ORDS_ADMIN.ENABLE_SCHEMA

図1-3 ORDS.ENABLE_SCHEMA PL/SQLプロシージャの実行



図1-4 ORDS.ENABLE_SCHEMA PL/SQLプロシージャ

1.1.1.3 Database Actionsへのアクセス

Database Actonsにアクセスするには、次の手順を実行します。

ORDSTESTユーザー・スキーマがREST対応になったので、ORDSTESTユーザーとしてDatabase Actionsにアクセスできるようになりました。

  1. URL http://[server]:[port]/ords/sql-developerに移動して「サインイン」ページを表示します。

    図1-5 ORDSTESTユーザーとしてのDatabase Actionsへのアクセス

    図1-5の説明が続きます
    「図1-5 ORDSTESTユーザーとしてのDatabase Actionsへのアクセス」の説明
  2. <username>: ORDSTESTおよび<password>: [Password]を使用してORDSTESTユーザーとしてサインインします。
  3. 「サインイン」ボタンをクリックします。
  4. Database Actionsの「起動パッド」ホームページが表示されます。これは、6つの主要カテゴリ(「開発」「Data Studio」「管理」「モニタリング」「ダウンロード」および「関連サービス」)からなります。各カテゴリは機能に基づいたアイコンからなり、アイコンをクリックすると、ORDSTESTユーザーが使用できるそれぞれのページに移動できます。

    図1-6 Database Actionsの「起動パッド」

    図1-6の説明が続きます
    「図1-6 Database Actionsの「起動パッド」」の説明
1.1.1.4 表の自動REST対応化
次の手順を実行して、新しいユーザーとして接続し、表を自動REST対応化します。

ノート:

この項でリストされているタスクは、ユーザーがORDSTESTユーザーとしてログインして実行します。
  1. データベース表の作成
  2. サンプル・データの挿入
  3. EMP表のREST対応化
1.1.1.4.1 データベース表の作成
EMP表を作成するには、次の手順を実行します。
  1. Database Actionsの「起動パッド」から、ダッシュボードの「開発」カテゴリで「SQL」を選択します。

    図1-7 SQLワークシートの選択



  2. SQLワークシートがロードされたら、次のSQL問合せを入力してEMP表を作成します。
CREATE TABLE EMP (
        EMPNO NUMBER(4,0),
        ENAME VARCHAR2(10 BYTE),
        JOB VARCHAR2(9 BYTE),
        MGR NUMBER(4,0),
        HIREDATE DATE,
        SAL NUMBER(7,2),
        COMM NUMBER(7,2),
        DEPTNO NUMBER(2,0),
        CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
        );
1.1.1.4.2 サンプル・データの挿入
  1. EMP表が正常に作成されたら、次のサンプル・データを挿入します。
     	Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7369,'SMITH','CLERK',7902,to_date('17-DEC-80','DD-MON-RR'),800,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7499,'ALLEN','SALESMAN',7698,to_date('20-FEB-81','DD-MON-RR'),1600,300,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7521,'WARD','SALESMAN',7698,to_date('22-FEB-81','DD-MON-RR'),1250,500,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7566,'JONES','MANAGER',7839,to_date('02-APR-81','DD-MON-RR'),2975,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7654,'MARTIN','SALESMAN',7698,to_date('28-SEP-81','DD-MON-RR'),1250,1400,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7698,'BLAKE','MANAGER',7839,to_date('01-MAY-81','DD-MON-RR'),2850,null,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7782,'CLARK','MANAGER',7839,to_date('09-JUN-81','DD-MON-RR'),2450,null,10);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7788,'SCOTT','ANALYST',7566,to_date('19-APR-87','DD-MON-RR'),3000,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7839,'KING','PRESIDENT',null,to_date('17-NOV-81','DD-MON-RR'),5000,null,10);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7844,'TURNER','SALESMAN',7698,to_date('08-SEP-81','DD-MON-RR'),1500,0,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7876,'ADAMS','CLERK',7788,to_date('23-MAY-87','DD-MON-RR'),1100,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7900,'JAMES','CLERK',7698,to_date('03-DEC-81','DD-MON-RR'),950,null,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7902,'FORD','ANALYST',7566,to_date('03-DEC-81','DD-MON-RR'),3000,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
    (7934,'MILLER','CLERK',7782,to_date('23-JAN-82','DD-MON-RR'),1300,null,10);
    commit;
    
1.1.1.4.3 EMP表のREST対応化
表を自動REST対応化するには、次の手順を実行します。
  1. ナビゲータ・パネルで、表名を右クリックし、「REST」に移動してから、「有効化」をクリックします。

    図1-8 EMP表の自動REST対応化



  2. 「オブジェクトのRESTの有効化」画面が表示されます。自動生成されたパラメータを確認したら、画面の下部にある「有効化」をクリックします。
  3. 図1-9 「オブジェクトのRESTの有効化」画面



  4. EMP表がREST対応化されたことを確認するメッセージ・スライダが表示されます。

    図1-10 表のREST対応化の確認



1.1.1.5 自動REST対応化されたオブジェクトのテスト

ノート:

データベース・オブジェクトの横にあるアイコンは、そのデータベース・オブジェクトが自動REST対応化されたことを示しています。

図1-11 データベース・オブジェクトが自動REST対応化されたことを示すアイコン



ノート:

このアイコンが表示されていない場合は、ナビゲータ・パネルで「リフレッシュ」をクリックしてアイコンを表示します。

EMP表のRESTエンドポイントを確認および取得するには、次の手順を実行します。
  1. オブジェクトの名前を右クリックし、「REST」をクリックしてから、「cURLコマンド」を選択します。

    図1-12 RestエンドポイントをテストするためのCurlコマンドの検索



  2. スライダ「表EMPのcURL」が表示されて、自動REST対応化されたリソースで使用可能な次のHTTPメソッドが示されます。
    • GET ALL
    • GET Single
    • POST
    • BATCH LOAD
    • PUT
    • DELETE
  3. GET ALL cURLコマンドのURL部分をコピーします。
  4. 新しいブラウザを開き、アドレス・バーにそのURLを貼り付け、キーボードの[Enter]を押します。

    図1-13 ブラウザでのEmp URLのテスト後の結果



  5. EMP表内の最初の25アイテムのリストが表示されます。
  6. 前のアイテム・リストを折りたたむと、その他の役立つリンク(自動REST対応化されたリソースすべてに自動で付属している)が表示されます。

1.1.2 「RESTワークショップ」を使用したRESTfulサービスの作成

この項では、Database Actionsの「RESTワークショップ」を使用してRESTfulサービスを作成する方法について説明します。「RESTワークショップ」では、RESTfulサービス定義の作成と編集ができます。

「RESTワークショップ」でRESTfulサービスを作成しテストするには、次の手順を実行します。
  1. 「RESTワークショップ」への移動
  2. モジュールの作成
  3. テンプレートの作成
  4. ハンドラの作成
  5. RESTfulサービスのテスト
1.1.2.1 「RESTワークショップ」への移動

RESTワークショップに移動するには、次の手順を実行します。

  1. ORDSTESTユーザーとしてログインし、Database Actionsの「起動パッド」に移動します。
  2. 「開発」セクションで「REST」を選択します。

    図1-14 「起動パッド」からの「RESTワークショップ」への移動



1.1.2.2 モジュールの作成
モジュールを作成するには、次の手順を実行します。
  1. RESTワークショップ画面がロードされたら、「モジュール」ウィジェットをクリックします。

    図1-15 「モジュール」ダッシュボード



  2. 「モジュール」ダッシュボードが表示されます。ダッシュボードの右上隅にある「モジュールの作成」ボタンをクリックします。
  3. 「モジュールの作成」スライダが表示されます。

    図1-16 「モジュールの作成」画面での値の入力



    それぞれのフィールドに次の値を入力します。
    • モジュール名: 接続用の任意の希望する名前。たとえば、demo.moduleです。

    • URI接頭辞: /demo/
    • ページ区切りサイズ: 25
    • 「権限によって保護済」フィールドで、「非保護」を選択します
  4. 「作成」をクリックすると、モジュール設定が保存され、モジュールを作成することを確認するための確認メッセージが表示されます。
1.1.2.3 テンプレートの作成
テンプレートを作成するには、次の手順を実行します。
  1. モジュールを作成すると、「テンプレートの作成」画面が自動的に表示されます。「テンプレートの作成」ボタンをクリックします。

  2. 「テンプレートの作成」画面が表示されます。「URIテンプレート」フィールドに、emp/と入力します。

    ノート:

    このデモンストレーションでは、デフォルト設定のままにします。

    図1-17 「テンプレートの作成」画面



  3. 「ハンドラの作成」ページが自動的に表示されます。
1.1.2.4 ハンドラの作成
Getハンドラを作成しSQL問合せ結果を確認するには、次の手順を実行します。

ノート:

このチュートリアルでは、GETメソッドを作成します。
  1. 「ハンドラの作成」ボタンをクリックして「ハンドラの作成」画面を表示します。次の設定を確認します。
    • メソッド: GET
    • ページ当たりのアイテム数: 7
    • ソース・タイプ: Collection Query

    図1-18 「ハンドラの作成」



  2. 「ソース」フィールドに、次のSQL問合せを入力します。
    SELECT
      INITCAP(ENAME) name,
      lower(job) job,
      TO_CHAR(sal,'9G999','NLS_NUMERIC_CHARACTERS=",."') salary,
      hiredate
    FROM
    emp

    「作成」ボタンをクリックすると、「リソース・ハンドラ」ページが自動的に開き、ハンドラを作成することを示す確認メッセージが表示されます。

  3. その後、SQL問合せをテストできます。これを行うには、「表示」アイコンをクリックします。問合せの結果が出力ウィンドウに表示されます。

    図1-19 リソース・ハンドラのSQL問合せ結果



1.1.2.5 RESTfulサービスのテスト
RESTfulサービスをテストするには、次の手順を実行します。
  1. 新しいタブで開くアイコンをクリックします。

    図1-20 エンドポイントをテストするための新規タブ



  2. 新しいブラウザ・タブが表示されます。ブラウザ・タブにGet URIを入力します。
  3. ブラウザ・ウィンドウにJSONレスポンスが返されます。

    図1-21 GETメソッドからのJSONレスポンス



1.1.3 Database Actionsを使用した権限の作成

この項では、権限を作成し保護されたリソースへのアクセスを制御する方法について説明します。

権限は、保護されたリソースへのアクセスを制御するために定義します。権限により、アクセスを、指定されているロールのセット内の少なくとも1つにアクセスできるユーザーに制限します。その後、1つの権限を、1つ以上のリソース・モジュールに関連付けます。これらのリソース・モジュールにアクセスする前に、ユーザーは、認証されてから認可されて、必要なロールのいずれかがそのユーザーにあることを保証されている必要があります。

1.1.3.1 権限を作成する手順

この項では、保護されたリソースへのアクセスを制御する手順について説明します。

権限を作成するには、次の手順を実行します。
  1. 「RESTワークショップ」への移動
  2. 「セキュリティ」メニュー項目で、「権限」を選択します。

    図1-22 「権限」メニュー・オプションの選択



  3. 「権限の作成」をクリックして「権限の作成」画面を表示します。
  4. それぞれのフィールドに次の値を入力します:
    • ラベル: Demo module privilege
    • 名前: demo.module.privilege
    • 説明: A Privilege created for demonstrating privileges for the demo.module Resource Module.
    • 「保護されたモジュール」表に移動します。demo.moduleリソース・モジュールを左の列から右の列に移動します。これにより、demo.moduleリソース・モジュールがこの権限に関連付けられるようになります。

      図1-23 リソース・モジュールと権限の関連付け



    • 「作成」ボタンをクリックします。新しい権限が正常に作成されたことを示す確認メッセージが表示されます。

      ノート:

      新しく作成した権限を「権限」ダッシュボードに表示できるようになりました。

      図1-24 作成された権限



  5. 作成された権限をテストするには、demo.moduleのパスに移動します。

    図1-25 権限をテストするためのデモ・モジュールへの移動



  6. emp/ URIをコピーします。

    図1-26 権限をテストするためのURIのコピー



  7. Database Actionsからサインアウトします。新しいブラウザ・ウィンドウを開きます。アドレス・バーにそのURIを貼り付け、[Enter]を押します
  8. リソースが保護されていることを示す、401未許可エラー・メッセージが表示されます。サインイン・プロンプトが表示されていることに注目してください。この権限は特定のロールに関連付けられていないため、Connectロールを付与されているユーザーは、サインインしてこのリクエストからのレスポンスを表示できます。
  9. データベース資格証明を使用してサインインし、リソースを表示します。

    図1-27 テスト・パス権限へのサインイン



  10. サインインすると、JSONドキュメントのコンテンツを表示できます。

1.1.4 REST APIにアクセスするためのOAuthクライアント・アプリケーションの登録

この項では、REST APIにアクセスするためにアプリケーション(ここではサードパーティ・アプリケーションと呼ぶ)を登録する方法について説明します。

OAuth 2.0は、REST APIを提供するHTTPサーバーで認証済エンド・ユーザーにかわってサード・パーティ・アプリケーションに制限付きアクセス権を与えるための手段を提供する、標準インターネット・プロトコルです。

サード・パーティ・アプリケーションでREST APIにアクセスする前:
  • それを登録する必要があります。また、
  • 認証されたエンド・ユーザーがアクセスを承認する必要があります
アプリケーションを登録する前に、ユーザーがアプリケーションを登録できるようにそれにユーザー・アイデンティティが割り当てられている必要があります。SQL開発者ロールがあるユーザーは、OAuth 2.0クライアントを登録できます。

ノート:

実際のアプリケーションでは、OAuthクライアントを登録できる特定のユーザーをプロビジョニングする必要があります。このようなユーザーには、OAuthクライアント開発者ロールが付与されている必要があります。

ノート:

次の例は、サード・パーティ・アプリケーションの作成と統合のための、フル機能のデモンストレーションの役割を果たすものではありません。この項の例では、OAuth 2.0プロトコルの中心概念の概要のみを示します。
1.1.4.1 REST APIにアクセスするためのアプリケーションの登録

アプリケーションを登録しREST APIにアクセスするには、次の手順を実行します。

  1. 「RESTワークショップ」ダッシュボードで、「セキュリティ」メニューから「OAuthクライアント」オプションを選択します。

    図1-28 「OAuthクライアント」メニュー・オプションへの移動



  2. 「OAuthクライアント」ダッシュボードが表示されます。「OAuthクライアント」ダッシュボードで、「OAuthクライアントの作成」をクリックします。

    図1-29 「OAuthクライアントの作成」



  3. 「OAuthクライアントの作成」スライダが表示されます。

    図1-30 選択したクライアント資格証明の確認



  4. 「OAuthクライアントの作成」スライダで次の値を入力します。
    • 名前: example_oauth_client
    • 説明: An example OAuth 2.0 client using the Client Credentials grant type.
    • サポートURI: https://example.com
    • サポート電子メール: email@example.com

    図1-31 「OAuthクライアントの作成」スライダでの値の入力



  5. 画面の「権限」タブに移動します。前の項で作成した権限を見つけます。それを「使用可能な権限」列から「選択した権限」列に移動します。

    図1-32 選択済列への権限の移動



    ノート:

    二重矢印を使用すると、使用可能な権限すべてが「選択した権限」列に移動されます。一重矢印を使用すると、現在選択されている権限のみが「選択した権限」列に移動されます。
  6. 「作成」をクリックします。
  7. 「OAuthクライアント」ダッシュボードに戻ると、新しく作成されたOAuthクライアントが見つかります。

    図1-33 作成されたOAuthクライアント



  8. 「OAuthトークン」が表示されたら、正しいシェル環境を選択します。

    図1-34 正しいシェル環境の選択



  9. brearerトークンのcurlコマンドをクリップボードにコピーします。
  10. 提供されたクライアントIDおよびクライアント・シークレットを使用して、次のcurlコマンドを発行し、アクセス・トークンを取得します。
    curl \
    --user Bx2vfYZkLa9D8_CZXvFL0Q..:xH1nn_CPtitiW5vOUQXrrg.. \
    --data 'grant_type=client_credentials' \
    http://localhost:8080/ords/ordstest/oauth/token
    
  11. 期限付きのアクセス・トークンを受け取ります。

    図1-35 期限付きアクセス・トークン



  12. これで、emp/エンドポイントにアクセスできるようになりました。curlコマンドを作成し、curlコマンドにヘッダーとしてアクセス・トークンを含めたことを確認します。
    curl -H "Authorization: Bearer PWMGyNYtzhg9J1r85_oJGQ" http://localhost:8080/ords/ordstest/demo/emp/ | jq

    図1-36 Getリクエストからのjqレスポンス



    ノート:

    JSONレスポンス・ペイロードが読取り可能な形式で構造化されるように、jqコマンドでオプションでパイプを使用できます。

1.1.5 Oracle SQL Developerを使用したRESTfulサービスの作成

この項では、Oracle SQL開発者デスクトップ・アプリケーション(クライアントとも呼ばれる)を使用したRESTfulサービスの開発に含まれる手順について説明します。

トピック:

1.1.5.1 データベース表のREST対応

RESTアクセスの表を有効にするには、次のステップを実行します。

ノート:

スキーマ・オブジェクトおよびデータベース・オブジェクトに指定した名前を使用することを含め、可能なかぎり正確にステップに従うことをお薦めします。この方法を使用してチュートリアルを正常に完了した後に、値を変更したい場合は自由に再度実行してみてください。

  1. 次の権限またはロールを持つユーザーordstestを作成します。

    CREATE USER ordstest IDENTIFIED BY <password>;
    GRANT "CONNECT" TO ordstest;
    GRANT "RESOURCE" TO ordstest;
    GRANT UNLIMITED TABLESPACE TO ordstest
    
  2. ordstestスキーマに接続します。SQL Developerで、ordstestスキーマに対する接続を作成し、接続してSQLワークシートを開きます。

  3. データベース表を作成します。たとえば、EMPという名前のサンプル表を作成するには、SQLワークシートに次を入力します。

    CREATE TABLE EMP (
      EMPNO NUMBER(4,0), 
      ENAME VARCHAR2(10 BYTE), 
      JOB VARCHAR2(9 BYTE), 
      MGR NUMBER(4,0), 
      HIREDATE DATE, 
      SAL NUMBER(7,2), 
      COMM NUMBER(7,2), 
      DEPTNO NUMBER(2,0), 
      CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
      );
    
  4. 表にいくつかのサンプル・データを挿入します。たとえば:

    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7369,'SMITH','CLERK',7902,to_date('17-DEC-80','DD-MON-RR'),800,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7499,'ALLEN','SALESMAN',7698,to_date('20-FEB-81','DD-MON-RR'),1600,300,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7521,'WARD','SALESMAN',7698,to_date('22-FEB-81','DD-MON-RR'),1250,500,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7566,'JONES','MANAGER',7839,to_date('02-APR-81','DD-MON-RR'),2975,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7654,'MARTIN','SALESMAN',7698,to_date('28-SEP-81','DD-MON-RR'),1250,1400,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7698,'BLAKE','MANAGER',7839,to_date('01-MAY-81','DD-MON-RR'),2850,null,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7782,'CLARK','MANAGER',7839,to_date('09-JUN-81','DD-MON-RR'),2450,null,10);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7788,'SCOTT','ANALYST',7566,to_date('19-APR-87','DD-MON-RR'),3000,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7839,'KING','PRESIDENT',null,to_date('17-NOV-81','DD-MON-RR'),5000,null,10);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7844,'TURNER','SALESMAN',7698,to_date('08-SEP-81','DD-MON-RR'),1500,0,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7876,'ADAMS','CLERK',7788,to_date('23-MAY-87','DD-MON-RR'),1100,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7900,'JAMES','CLERK',7698,to_date('03-DEC-81','DD-MON-RR'),950,null,30);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7902,'FORD','ANALYST',7566,to_date('03-DEC-81','DD-MON-RR'),3000,null,20);
    Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7934,'MILLER','CLERK',7782,to_date('23-JAN-82','DD-MON-RR'),1300,null,10);
    commit;
    
  5. RESTでEMP表のスキーマを有効化します。SQL Developerで、ordstest接続を右クリックし、「RESTサービス」 > 「RESTfulサービスを有効にする」の順に選択して、次のウィザード・ページを表示します。

    図1-37 RESTでのEMP表のスキーマの有効化

    図1-37の説明が続きます
    「図1-37 RESTでのEMP表のスキーマの有効化」の説明

    スキーマの有効化: このオプションを有効にします。

    スキーマ別名: スキーマ別名としてordstestを受け入れます。

    承認が必要: 簡素化のために、このチュートリアルでは承認を要求しないため、このオプションは無効にします。

    「次」をクリックします。

  6. ウィザードのRESTfulサマリー・ページで「終了」をクリックします。

  7. EMP表を有効化します。SQL Developerで、「接続」ナビゲータでEMP表を右クリックし、「RESTサービス」 > 「RESTfulサービスを有効にする」の順に選択して次のウィザード・ページを表示します。

    図1-38 RESTでのEMP表の有効化

    図1-38の説明が続きます
    「図1-38 RESTでのEMP表の有効化」の説明

    オブジェクトの有効化: このオプションを有効にします(つまり、EMP表のRESTアクセスを有効にします)。

    オブジェクト別名: オブジェクト別名としてempを受け入れます。

    承認が必要: 簡素化のために、このチュートリアルでは承認を要求しないため、このオプションは無効にします。

  8. ウィザードのRESTfulサマリー・ページで「終了」をクリックします。

    EMP表がREST HTTPエンドポイントとして公開されます。

    ノート:

    DELETE、PUT、POSTおよびmetadata-catalogエンドポイントも自動生成されています。
  9. RESTエンドポイントをテストします。Webブラウザで、次の図に示すように、URL http://localhost:8080/ords/ordstest/emp/を入力します。

    • ORDSTESTスキーマが/ordstest/パスで公開されました。

    • EMP表が/emp/パスで公開されました。

    図1-39 RESTを有効化した表のテスト

    図1-39の説明が続きます
    「図1-39 RESTを有効化した表のテスト」の説明
1.1.5.2 「接続」ナビゲータを使用したRESTfulサービスの作成

この項では、接続ナビゲータの「RESTデータ・サービス」ノードを使用してRESTful Serviceを作成する方法を説明します。Oracle REST Data Servicesには、接続ナビゲータを介してRESTfulサービス定義を作成および編集できるようにするオプションが用意されています。

接続ナビゲータの「RESTデータ・サービス」ノードを使用してRESTfulサービスを作成するには、次のステップに従います。

  1. ordstestスキーマで、「RESTデータ・サービス」を選択します。

    図1-40 接続ナビゲータ配下の「RESTデータ・サービス」オプション

    図1-40の説明が続きます
    「図1-40 接続ナビゲータ配下の「RESTデータ・サービス」オプション」の説明

    次のステップでは、RESTfulサービスを作成してテストします。

  2. 「RESTデータ・サービス」ノードで「モジュール」ノードを右クリックし、「新規モジュール」をクリックして、「モジュールの指定」ページで情報を入力します。

    図1-41 「モジュールの指定」ページでの情報の入力

    図1-41の説明が続きます
    「図1-41 「モジュールの指定」ページでの情報の入力」の説明

    モジュール名: 接続用の任意の希望する名前。たとえば、demo

    URI接頭辞: /demo/

    公開 - このRESTfulサービスを使用可能にします: 有効化(チェック)。

    ページ区切りサイズ: 25

  3. 「次」をクリックし、テンプレートの指定ページで情報を入力します。

    図1-42 「テンプレートの指定」ページでの情報の入力

    図1-42の説明が続きます
    「図1-42 「テンプレートの指定」ページでの情報の入力」の説明

    URIパターン: emp/

    残りのオプションはデフォルトを受け入れます。

  4. 「次」をクリックして、ウィザードのRESTfulサマリー・ページに移動し、「終了」をクリックします。「モジュール」ノードを展開して、作成したリソース・モジュールを表示します。

  5. モジュールDemoを展開し、emp/ノードを右クリックして、「追加」ハンドラを選択し、続いてGETメソッドを選択します。

  6. リソース・ハンドラの作成ページに関する情報を入力します。

    図1-43 リソース・ハンドラの作成ページへの情報入力

    図1-43の説明が続きます
    「図1-43 リソース・ハンドラの作成ページへの情報入力」の説明

    ソース・タイプ: Collection Query

    ページ区切りサイズ: 7

    「適用」をクリックします。

    次のステップは、GETリソース・ハンドラの問合せを定義することです。

  7. SQLワークシートで、次の問合せを入力します。

    SELECT
       INITCAP(ENAME) name,
      lower(job) job,
      TO_CHAR(sal,'9G999','NLS_NUMERIC_CHARACTERS=",."') salary,
      hiredate	
    FROM
    emp
  8. 「RESTハンドラの保存」アイコンをクリックします。「メッセージ - ログ」ペインに、ハンドラがデータベースに保存されることを確認するメッセージが表示されます。

    ノート:

    「メッセージ - ログ」ペインが表示されない場合は、「ビュー」メニューに移動し、「メッセージ」を選択します。
  9. RESTfulサービスをテストします。Webブラウザで、次の図に示すように、URL http://localhost:8080/ords/ordstest/demo/emp/を入力します。

    • ORDSTESTスキーマが/ordstest/パスで公開されました。

    • 問合せが/demo/emp/パスで公開されました。

    図1-44 WebブラウザでのURLのテスト

    図1-44の説明が続きます
    「図1-44 WebブラウザでのURLのテスト」の説明
1.1.5.2.1 REST Data Services配下での権限の作成

保護されたリソースへのアクセスの制御は権限を定義することで行われます。「権限」はアクセスを、指定したロールを少なくとも1セットは持つユーザーに制限します。次に権限を1つ以上のリソース・モジュールに関連付けます。必要なロールの1つを確実に持つように、ユーザーは認証されてから権限が付与され、その後リソース・モジュールにアクセスできるようになります。

リソースを保護するには、次のステップを実行します。

  1. 権限を作成します。SQL Developerで、「REST Data Services」のPrivilegesノードを右クリックし、「新規権限」を選択して「権限の作成」ダイアログ・ボックスを表示します。

    図1-45 「権限の作成」ダイアログ・ボックス

    図1-45の説明が続きます
    「図1-45 「権限の作成」ダイアログ・ボックス」の説明

    名前: Demo

    タイトル: Example Privilege

    説明: Demonstrate controlling access with privileges

    保護されたモジュール: リストにDemoモジュールが入っていることを確認します。必要に応じて、矢印ボタンを使用します。

    「適用」をクリックします。

    デモ・モジュールを保護する権限が作成されました。ただし、権限を特定のロールに制限していません。これはデモ・モジュールにアクセスする前にユーザーの認証を必要とすることを意味します(次のステップ)。

  2. RESTfulサービスをテストします。Webブラウザで次のURLを入力します。
    http://localhost:port/ords/ordstest/demo/emp/
  3. リンクをクリックしてサイン・インし、test_developerの資格証明を入力します。

    ノート:

    test_developerユーザーを作成するには、「SQL問合せからのRESTfulサービスの作成」の項を参照してください。

    次のようなJSONドキュメントが表示されます。

    図1-46 サインイン後のJSONドキュメント

    図1-46の説明が続きます
    「図1-46 サインイン後のJSONドキュメント」の説明
1.1.5.2.2 ロールの作成

この項では、ロールを作成および削除する方法について説明します。

ロールを作成するには、次のステップに従います。
  1. 「RESTデータ・サービス」「ロール」を右クリックし、続いて「新規ロール」をクリックします。
  2. 「ロールの作成」ダイアログ・ボックスに、作成するロールの名前を入力します。

    図1-47 新規ロール名の入力

    図1-47の説明が続きます
    「図1-47 新規ロール名の入力」の説明
  3. 「適用」をクリックすると、新しいロールが作成されます。
    ロールの名前を変更するか削除するには、ロール名を右クリックして、次のオプションの1つを選択します。
    • 名前の変更: ロール名を変更する場合。
    • 「削除」をクリックしてロールを削除します。
1.1.5.3 SQL問合せからのRESTfulサービスの作成

Oracle REST Data Servicesは、Oracle SQL DeveloperがRESTfulサービス定義を作成および編集できるようにするREST API (リソース・モジュールAPIと呼ばれる)を提供します。このオプションは、データベースへの直接アクセス権を持っていない場合に使用できます。リソース・モジュールAPIへのアクセスは保護されていて、適切なロールのユーザーがプロビジョニングされる必要があり、SQL DeveloperからAPIにアクセスするには、作成されたユーザーの資格証明を使用する必要があります。

SQL問合せからのRESTfulサービスを作成するには、次のステップを実行します。

  1. Oracle REST Data Servicesがインストールされているフォルダで、コマンド・プロンプトで次のコマンドを入力します。

    java -jar ords.war user test_developer "SQL Developer"
    
    • パスワードの入力を求めるメッセージが表示されます。

    • このコマンドはtest_developerという名前のユーザーを作成し、ユーザーにSQL Developerという名前のロールを付与します。SQL Developerロールのユーザーのみがリソース・モジュールのAPIにアクセスすることができます。

    • ユーザー詳細は、ORDS構成フォルダのcredentialsという名前のファイルに格納されます。ただし、ユーザー資格証明を本番デプロイメントの資格証明ファイルに格納することはお薦めしません。そのかわりに、ユーザーをホスト・アプリケーション・サーバーにプロビジョニングしてください。

    残りのステップでは、RESTfulサービスを作成してテストします。

  2. RESTful接続を作成します。SQL Developerで、「表示」 > 「RESTデータ・サービス」 > 「開発」の順に選択します。

  3. 「REST開発」ペインで、「RESTデータ・サービス」 > 「接続」の順に右クリックします。

  4. 「RESTfulサービス接続」ダイアログ・ボックスで、+ (プラス記号)アイコンをクリックし、選択可能なリストに接続を追加します。

  5. 「新規RESTfulサービス接続」ダイアログ・ボックスで、次に示す必要な情報を入力します。

    図1-48 「新規RESTfulサービス接続」の情報の入力

    図1-48の説明が続きます
    「図1-48 「新規RESTfulサービス接続」の情報の入力」の説明

    接続名: 接続用の任意の希望する名前。例: ordstest

    ユーザー名: test_developer

    httpまたはhttps: このチュートリアルでは、簡素化のため、httpを選択します。

    ホスト名: localhost

    ポート: 8080

    サーバー・パス: /ords

    ワークスペース: ordstest

    「OK」をクリックし、プロンプトでtest_developerユーザーのパスワードを入力します。

  6. モジュールを作成します。「REST開発」ビューでModulesノードを右クリックし、「新規モジュール」をクリックして、モジュールの指定ページで情報を入力します。

    図1-49 「モジュールの指定」ページでの情報の入力

    図1-49の説明が続きます
    「図1-49 「モジュールの指定」ページでの情報の入力」の説明

    モジュール名: 接続用の任意の希望する名前。例: test

    URI接頭辞: /test

    公開 - このRESTfulサービスを使用可能にします: 有効化(チェック)。

    ページ区切りサイズ: 7

  7. 「次」をクリックし、テンプレートの指定ページで情報を入力します。

    図1-50 「テンプレートの指定」ページでの情報の入力

    図1-50の説明が続きます
    「図1-50 「テンプレートの指定」ページでの情報の入力」の説明

    URIテンプレート: /emp/

    残りのオプションはデフォルトを受け入れます。

  8. 「次」をクリックし、ハンドラの指定ページで情報を入力します。

    図1-51 ハンドラの指定ページでの情報の入力

    図1-51の説明が続きます
    「図1-51 ハンドラの指定ページでの情報の入力」の説明

    メソッド: GET

    セキュア・アクセスが必要: このチュートリアルでは無効化(チェック解除)します。

    ソース・タイプ: Collection Query

    ページ区切りサイズ: 7

  9. 「次」をクリックして、ウィザードのRESTfulサマリー・ページに移動し、「終了」をクリックします。

    リソース・モジュールが作成され、次のステップではGETリソース・ハンドラの問合せを定義します。

  10. GETリソース・ハンドラの問合せを定義します。

    1. 「REST開発」ビューでModulesノードの下にあるtestノードを展開します。

    2. /emp/ノードを展開し、GETノードを右クリックして「開く」を選択します。

    3. GET /emp/用に開いたSQLワークシートで、次のSQL問合せを入力します。

      select * from emp
      
    4. 「REST開発」ビューの「モジュール」ノードの下のテスト・ノードで右クリックします

    5. 「アップロード」をクリックします。モジュールがアップロードされたことを確認する確認ダイアログが表示されます。

  11. RESTfulサービスをテストします。Webブラウザで、次の図に示すように、URL http://localhost:8080/ords/ordstest/test/emp/を入力します。

    • ORDSTESTスキーマが/ordstest/パスで公開されました。

    • 問合せが/test/emp/パスで公開されました。

    図1-52 SQL問合せから作成したRESTfulサービスのテスト

    図1-52の説明が続きます
    「図1-52 SQL問合せから作成したRESTfulサービスのテスト」の説明
1.1.5.4 リソースの保護

ここまで、チュートリアルでは、セキュリティなしでテストをした方が簡単なため、作成したRESTfulエンドポイントで意図的にセキュリティを無効化してきました。この項では/test/emp/サービスを保護するため、サービスにアクセスする前にユーザーは認証が必要となります。

保護されたリソースへのアクセスの制御は権限を定義することで行われます。「権限」はアクセスを、指定したロールを少なくとも1セットは持つユーザーに制限します。次に権限を1つ以上のリソース・モジュールに関連付けます。必要なロールの1つを確実に持つように、ユーザーは認証されてから権限が付与され、その後リソース・モジュールにアクセスできるようになります。

リソースを保護するには、次のステップを実行します。

  1. 権限を作成します。SQL Developerで、「REST開発」ビューのPrivilegesノードを右クリックし、「新規権限」を選択して次に示す「権限の編集」ダイアログ・ボックスを表示します。

    図1-53 「権限の編集」ダイアログ・ボックス

    図1-53の説明が続きます
    「図1-53 「権限の編集」ダイアログ・ボックス」の説明

    名前: test

    タイトル: Example Privilege

    説明: Demonstrate controlling access with privileges

    保護されたモジュール: リストにtestモジュールが入っていることを確認します。必要に応じて、矢印ボタンを使用します。

    「適用」をクリックします。

  2. test権限を右クリックし、「アップロード」をクリックします。

    ダイアログ・ボックスが、権限がアップロードされたことを確認します。

    テスト・モジュールを保護する権限が作成されました。ただし、権限を特定のロールに制限していません。これはテスト・モジュールにアクセスする前にユーザーの認証を必要とすること意味します(次のステップ)。

  3. RESTfulサービスをテストします。Webブラウザで次のURLを入力します。
    http://localhost:8080/ords/ordstest/test/emp/
    
  4. リンクをクリックしてサイン・インし、test_developerの資格証明を入力します。

    JSONドキュメントのコンテンツが表示されます。

1.1.5.5 OAuthクライアント・アプリケーションの登録

この項では、REST APIにアクセスするためにアプリケーション(ここでは「サード・パーティ」アプリケーションと呼ぶ)を登録する方法を説明します。

OAuth 2.0は、エンド・ユーザーのために、REST APIのサード・パーティ・アプリケーションへのアクセスを制限する手段をHTTPサーバーに提供する標準のインターネット・プロトコルです。

  • サード・パーティ・アプリケーションの作成者は、クライアント資格証明を取得するためにアプリケーションを登録する必要があります。

  • クライアント資格証明のサード・パーティ・アプリケーションを使用すると、エンド・ユーザーに対してアクセスを承認するプロンプトを表示するWebフローを起動します。

そのため、サード・パーティ・アプリケーションがREST APIにアクセスできるするには、登録して、ユーザーがアクセスを承認する必要があります。そして、アプリケーションを登録できるようにするには、ユーザー登録アプリケーションを有効にするユーザー識別子を割り当てる必要があります。SQL Developerロールを持つユーザー(「SQL問合せからのRESTfulサービスの作成」で作成されたtest_developerなど)には、OAuthクライアントの登録が許可されています。

ヒント:

実際のアプリケーションでは、OAuthクライアントを登録できる特定のユーザーをプロビジョニングすることもできます。これらのユーザーにはOAuth Client Developerロールの権限を付与してください。

この項では、これらの処理を実行する方法の概要を示します。サード・パーティ・アプリケーションをどのように作成して統合するかの全機能のデモンストレーションではありません。含まれている概念の概要を示すのみです。

  1. クライアント・アプリケーションを登録します。

    1. Webブラウザで次のURLを入力します。

      http://localhost:8080/ords/ordstest/oauth/clients/
      
    2. プロンプトで、リンクをクリックしてサイン・インし、test_developerユーザーの資格証明を入力ます。

    3. 新規クライアントをクリックし、次の情報を入力します。

      名前: Test Client

      説明: An example OAuth Client

      リダイレクトURI: http://example.org/redirect

      サポート電子メール: info@example.org

      サポートURI: http://example.org/support

      必要な権限: Example Privilege

    4. 「作成」をクリックします。

      クライアント登録が作成され、クライアントの認可URIが表示されます。暗黙の権限付与認証フロー(https://tools.ietf.org/html/rfc6749#section-4.2で説明)を使用するクライアントを作成しました。

      クライアントに割り当てられている「クライアント識別子」および認可URIの値をノートにとります。これらの値は認可フローの開始に使用されます(次の主要ステップ)。

  2. クライアント・アプリケーションを承認します。

    実際のサード・パーティ・クライアント・アプリケーションでは、クライアントはWebブラウザを認可URIに誘導することによって承認フローを開始します。エンド・ユーザーには、サイン・インしてクライアント・アプリケーションへのアクセスを承認するためのプロンプトが表示されます。ブラウザは、承認用にaccess_tokenが組み込まれたURIフラグメント付きの、クライアントの登録されたリダイレクトURIにリダイレクトされます。このプロセスをシミュレートするには:

    1. Webブラウザで、前述のステップで確認した認可URIを入力します。URLは次のようになります(この値の例をコピーして貼り付けないでください)。

      http://localhost:8080/ords/ordstest/oauth/auth?response_type=token&client_id=5B77A34A266EFB0056BE3497ED7099.&state=d5b7944-d27d-8e2c-4d5c-fb80e1114490&_auth_=force
      

      client_id値は、アプリケーションに割り当てられたクライアント識別子の値である必要があります。正しいclient_id値を使用していることを確認してください。前述の例の値は使用しないでください。アプリケーションに割り当てられているクライアント識別子に置き換えてください。

      state値は、クライアントが記憶する、一意の推測できない値にしてください。後でOracle REST Data Servicesから受け取ったリダイレクトがこの認可リクエストのレスポンスに入っていることを確認するために使用できます。この値がクロス・サイト・リクエスト・フォージェリ攻撃を防ぐために使用されます。これはとても重要で、省略できません。また、攻撃者によって推測またはや検出が可能な値にはしないでください。

    2. プロンプトで、リンクをクリックしてサイン・インし、test_developerユーザーの資格証明を入力ます。

    3. リクエストされたアクセスを確認し、「承認」をクリックします。

      ブラウザは、次のようなURLにリダイレクトされます。

      http://example.org/redirect#token_type=bearer&access_token=-i_Ows8j7JYu0p07jOFMEA..&expires_in=3600
      

      OAuthクライアントを登録するときに、http://example.org/リダイレクトをリダイレクトURIとして指定しました。承認リクエストの完了時には、ブラウザはこの登録されたリダイレクトURIにリダイレクトされます。URIに追加された情報は、承認用に生成されたアクセス・トークンに関する情報です。

      実際のアプリケーションでは、サード・パーティ・アプリケーションは、アクセス・トークンをキャッシュし、別のページにリダイレクトしてREST APIにアクセスするために認可されたことをユーザーに示し、アクセス・トークンをREST APIのすべての後続のリクエストに含めることでリダイレクトURIに応答します。ただし、このチュートリアルでは、次の主要なステップで説明しているように、アクセス・トークンの値をノートにとって、そのアクセス・トークンを含むHTTPリクエストを手動で作成するのみです。

      アクセス・トークンの値(前述の例では-i_Ows8j7JYu0p07jOFMEA..)は承認されるたびに変更されます。

      アクセス・トークンの有効期限が切れることに注意してください。前述の例では、3600秒後(&expires_in=3600)、つまり1時間後に有効期限が切れます。

  3. 許可されたリクエストを発行します。

    アクセス・トークンを取得した後は、クライアント・アプリケーションはアクセス・トークンを記憶し、保護されたリソースへのすべてのリクエストに含める必要があります。次の例に示すように、アクセス・トークンはHTTP認可リクエスト・ヘッダー(https://datatracker.ietf.org/doc/html/rfc2616#section-14.8で説明)に含める必要があります。

    Host: localhost:8080
    GET /ords/ordstest/test/emp/
    Authorization: Bearer -i_Ows8j7JYu0p07jOFMEA..
    

    有効なHTTPリクエストの作成をエミュレートするには、cURLコマンドライン・ツールを使用します(必要に応じて、cURLをインストールします)。実際のアプリケーションでは、このリクエストはXMLHttpRequestなどHTTPリクエストを作成するクライアントによって実行されます。たとえば:

    curl -i -H'Authorization: Bearer -i_Ows8j7JYu0p07jOFMEA..' http://localhost:8080/ords/ordstest/test/emp/
    

    ただし、この例では、-i_Ows8j7JYu0p07jOFMEA..を前の手順でメモしたアクセス・トークン値で置き換えます。

    次のJSONドキュメントのような出力が表示されます。

    HTTP/1.1 200 OK
    Content-Type: application/json
    Transfer-Encoding: chunked
     
    {
     "items":[
      {"empno":7369,"ename":"SMITH","job":"CLERK","mgr":7902,"hiredate":"1980-12-17T00:00:00Z","sal":800,"comm":null,"deptno":20},
      {"empno":7499,"ename":"ALLEN","job":"SALESMAN","mgr":7698,"hiredate":"1981-02-20T00:00:00Z","sal":1600,"comm":300,"deptno":30},
      {"empno":7521,"ename":"WARD","job":"SALESMAN","mgr":7698,"hiredate":"1981-02-22T00:00:00Z","sal":1250,"comm":500,"deptno":30},
      {"empno":7566,"ename":"JONES","job":"MANAGER","mgr":7839,"hiredate":"1981-04-01T23:00:00Z","sal":2975,"comm":null,"deptno":20},
      {"empno":7654,"ename":"MARTIN","job":"SALESMAN","mgr":7698,"hiredate":"1981-09-27T23:00:00Z","sal":1250,"comm":1400,"deptno":30},
      {"empno":7698,"ename":"BLAKE","job":"MANAGER","mgr":7839,"hiredate":"1981-04-30T23:00:00Z","sal":2850,"comm":null,"deptno":30},
      {"empno":7782,"ename":"CLARK","job":"MANAGER","mgr":7839,"hiredate":"1981-06-08T23:00:00Z","sal":2450,"comm":null,"deptno":10}
     ],
     "hasMore":true,
     "limit":7,
     "offset":0,
     "count":7,
     "links":[
      {"rel":"self","href":"http://localhost:8080/ords/ordstest/test/emp/"},
      {"rel":"describedby","href":"http://localhost:8080/metadata-catalog/test/emp/"},
      {"rel":"first","href":"http://localhost:8080/ords/ordstest/test/emp/"},
      {"rel":"next","href":"http://localhost:8080/ords/ordstest/test/emp/?offset=7"}
     ]
    }
    

    ただし、Authorizationヘッダーが省略された場合には、かわりにステータス401 Unauthorizedが戻されます。

関連項目:

curl_haxx