ヘッダーをスキップ
Oracle® Application Express SQLワークショップ・ガイド
リリース4.2 for Oracle Database 12c
B71341-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 RESTfulサービスの使用

RESTfulサービスは、データベースへのアクセスに使用されるRESTfulサービスの宣言仕様を有効にします。これらのサービスは、Oracle Application Expressリスナーとともに動作し、これらのサービスを使用できるようにします。この項では、RESTfulサービスを作成、編集および削除する方法について説明します。


注意:

インスタンス管理者がこのApplication Expressインスタンスに対してRESTfulサービスを無効にしている場合、このインスタンスでRESTfulサービスが使用できないため、RESTfulサービス・アイコンが表示されません。『Oracle Application Express管理ガイド』のSQLワークショップの構成に関する説明を参照してください。

内容は次のとおりです。

5.1 RESTの概要

Representational State Transfer (REST)は、World Wide Webのような分散ハイパーメディア・システムのためのソフトウェア・アーキテクチャのスタイルの1つです。RESTの原則に準拠するサービスは、RESTfulと呼ばれます。RESTの詳しい説明はこのマニュアルの対象外ですが、次に、RESTfulサービスの特性を示します。

5.2 RESTfulサービスについて

RESTfulサービスによって、他のアプリケーションがアクセスできるWebサービスにアプリケーションが公開され、データを交換します。たとえば、RESTfulサービスを構成して、特定の部門のすべての従業員名を返すことができます。RESTfulサービスのデータ交換は、Representational State Transfer (REST)アーキテクチャ・スタイルに従います。

アプリケーションで提供する各Webサービスに対して、RESTfulサービス・モジュールを構成する必要があります。このモジュールは、よく使うテンプレートを共通のUniversal Resource Identifier (URI)接頭辞でグループ化したものです。このWebサービスで公開する同一のリソース・テンプレートの接頭辞に関連付けられている各メソッドに対して、リソース・ハンドラを定義する必要があります。たとえば、データを返すメソッドとデータを格納するメソッドを指定するには、それぞれの操作に対してリソース・ハンドラを定義する必要があります。

RESTfulサービスを作成する場合、実行するリクエスト、レスポンスおよび操作の構造について、次の情報を指定する必要があります。


参照:

RESTful Webサービス・モジュールの例は、「RESTfulサービス・モジュールの例(oracle.example.hr)について」を参照してください。

この項では、RESTfulサービスの構成方法について説明します。アプリケーションでWebサービスを使用するには、RESTful Web参照を構成する必要があります。『Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド』のWebサービスの実装に関する説明を参照してください。

5.3 RESTfulサービスの要件

RESTfulサービス・ユーティリティが使用可能になり、適切に機能するためには、次の要件を満たす必要があります。

5.4 RESTfulサービスへのアクセス

RESTfulサービスにアクセスするには、次のステップを実行します。

  1. ワークスペースのホームページにログインします。

  2. 「SQLワークショップ」をクリックします。

  3. 「RESTfulサービス」をクリックします。

    r_service.gifの説明が続きます
    図r_service.gifの説明

    RESTfulサービスのホームページが表示されます。

5.5 RESTfulサービス・モジュールの例(oracle.example.hr)について

Application Expressワークスペースには、デフォルトで、RESTfulサービス・モジュールの例(oracle.example.hr)が含まれます。このモジュールは、emp表から従業員情報を取得して表示する複数の方法を実装するリソース・テンプレートおよびリソース・ハンドラの例を示します。oracle.example.hrモジュールにアクセスするには、「RESTfulサービスへのアクセス」を参照してください。


参照:

その他のRESTfulサービスの例については、Learning Libraryを参照してください。Oracle by Example(OBE)、デモ、チュートリアルなどの無料オンライン・トレーニング・コンテンツを検索します。次のURLでOracle Learning Libraryにアクセスしてください。

http://www.oracle.com/technetwork/tutorials/index.html


hr_example.gifの説明が続きます
図hr_example.gifの説明

oracle.example.hrモジュールは、複数のリソース・テンプレートで構成されています。各リソース・テンプレートは、それぞれ異なった方法で、情報を取得して返される結果を書式設定します。

oracle_ex_temp.gifの説明が続きます
図oracle_ex_temp.gifの説明

次に、各GETリソース・ハンドラを起動した際に、各oracle.example.hrリソース・テンプレートで予期される結果を示します。

5.5.1 CSV形式での結果セットの返却(empinfo/)

oracle.example.hrモジュールには、CSV形式でデータを返すRESTfulサービスを示すempinfo/リソース・テンプレートが含まれます。この例では、emp表の従業員データはすべて、SQL問合せを使用して返されます。

CSV形式でデータを取得するRESTfulサービス・モジュールの例を構築してテストするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

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

  3. 「名前」に、my.example.demoと入力します。

  4. 「URI」に、demo/と入力します。これは、このRESTfulサービスへのアクセスに使用されるUniform Resource Identifier (URI)のベースです。

  5. 「リソース・テンプレートの追加」で、「URIテンプレート」にempinfo/と入力します。

  6. 「リソース・ハンドラの追加」で、「方法」に「GET」を選択します。

    リソース・ハンドラの設定が表示されます。

  7. 次の選択およびエントリを行います。

    • ソース・タイプ: 「問合せ」を選択します。SQL問合せを実行し、選択したフォーマットに応じて、JavaScript Object Notation (JSON)形式またはCSV形式に結果セットを変換します。このオプションは、HTTPメソッドのGETを選択した場合にのみ使用できます。

    • 書式: 「CSV」を選択します。

    • ソース: 次を入力します。

      select * from emp
      
      emp_info.gifの説明が続きます
      図emp_info.gifの説明

  8. 「モジュールの作成」をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  9. empinfo/で、GETリソース・ハンドラをクリックします。

  10. 「テスト」をクリックします。

    オープン・ダイアログが表示され、リソース・ハンドラのソースSQL問合せの実行結果を含むCSVファイルを開くか、保存することができます。

  11. 「ファイルを保存」を選択して、「OK」をクリックします。

  12. 保存したCSVファイルの内容は、Microsoft Excelなどのエディタで開いて表示できます。

    CSVファイルには、emp表のすべてのデータが含まれます。

    empinfo_results.gifの説明が続きます
    図empinfo_results.gifの説明


    注意:

    結果が正しくない場合は、empinfo GETリソース・ハンドラとoracle.example.hr empinfo GETリソース・ハンドラを比較します。

  13. 「変更の適用」をクリックします。

5.5.2 パラメータに基づくデータの取得(employees/{id})

oracle.example.hrモジュールには、指定されたidに基づく1行分のデータをJSON形式で返すRESTfulサービスを示すemployees/{id}リソース・テンプレートが含まれます。

指定されたパラメータに基づいて結果を返すリソース・テンプレートのその他の例は、oracle.example.hrサービス・モジュールのemployeesfeed/{id}empsec/{empname}およびempsecformat/{empname}リソース・テンプレートを参照してください。

パラメータに基づいて従業員データを取得するリソース・テンプレートを追加してテストするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・テンプレートの追加先とするRESTfulサービス・モジュールをクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 左のパネル下部で、「テンプレートの作成」をクリックします。

    「リソース・テンプレート」オプションが右側に表示されます。

  4. 「URIテンプレート」に、employees/{id}と入力します。

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

    employees{id}リソース・テンプレートが左のパネルに表示されます。

  6. employees{id}リソース・テンプレートの下で、「ハンドラの作成」をクリックします。

    「リソース・ハンドラ」オプションが表示されます。

  7. 次の選択およびエントリを行います。

    • 方法: 「GET」を選択します。

    • ソース・タイプ: 「1行問い合せる」を選択します。1行分のデータをJSON形式で返すSQL問合せを1回実行します。このオプションは、HTTPメソッドのGETを選択した場合にのみ使用できます。

    • セキュア・アクセスが必要: 「いいえ」を選択します。

    • ページ区切りサイズ: 空白にします。ここでは、1つのレコードのみが取得されるため、ページ区切りを設定する必要はありません。

    • ソース: 次を入力します。

      select * from emp  where empno = :id
      
    employees_id.gifの説明が続きます
    図employees_id.gifの説明

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

    GETハンドラが左のパネルのemployees/{id}リソース・テンプレートの下に表示されます。

  9. 「バインド変数の設定」をクリックします。

  10. 「バインド変数値」に、7876と入力します。

  11. 「テスト」をクリックします。

    従業員IDが7876である従業員レコードに関する結果を示すダイアログが表示されます。

    employees_id_res.gifの説明が続きます
    図employees_id_res.gifの説明


注意:

結果が正しくない場合は、employees/{id} GETリソース・ハンドラとoracle.example.hr employees/{id} GETリソース・ハンドラを比較します。

5.5.3 ページ区切りセットを使用したJSON形式での結果セットの取得(employees/)

oracle.example.hrモジュールには、JSON形式でデータを戻すRESTfulサービスを示すemployees/リソース・テンプレートが含まれます。この例では、ページ区切りを、結果で返される行数よりも小さい値に設定して実行します。

JSON形式で結果を返すリソース・テンプレートのその他の例は、oracle.example.hrサービス・モジュールのempsec/{empname}リソース・テンプレートを参照してください。

JSON形式でデータを取得してページ区切りを実行するリソース・テンプレートを追加してテストするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・テンプレートの追加先とするRESTfulサービス・モジュールをクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 左のパネル下部で、「テンプレートの作成」をクリックします。

    「リソース・テンプレート」オプションが右側に表示されます。

  4. 「URIテンプレート」に、employees/と入力します。

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

    employees/リソース・テンプレートが左のパネルに表示されます。

  6. employees/リソース・テンプレートの下で、「ハンドラの作成」をクリックします。

    「リソース・ハンドラ」オプションが表示されます。

  7. 次の選択およびエントリを行います。

    • 方法: 「GET」を選択します。

    • ソース・タイプ: 「問合せ」を選択します。

    • 書式: 「JSON」を選択します。

    • セキュア・アクセスが必要: 「いいえ」を選択します。

    • ページ区切りサイズ: 7と入力します。

    • ソース: 次を入力します。

      select empno "$uri", empno, ename
        from (
             select emp.*
                  , row_number() over (order by empno) rn
               from emp
             ) tmp
       where rn between :row_offset and :row_count 
      
    r_emp.gifの説明が続きます
    図r_emp.gifの説明

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

    GETハンドラが左のパネルのemployees/リソース・テンプレートの下に表示されます。

  9. 「テスト」をクリックします。

    JSONで結果が表示されます。各アイテムのuri:{$ref}によって、リンクに指定されたIDに関するemployees/{id} RESTfulサービスが起動されることに注意してください。

    employees_rslt.gifの説明が続きます
    図employees_rslt.gifの説明


    注意:

    結果が正しくない場合は、employees/ GETリソース・ハンドラとoracle.example.hr employees GETリソース・ハンドラを比較します。

  10. empno 7369に関するリンクで、最初のuri:{$ref}リンクをクリックします。

    7369に関する個別の従業員レコードが表示されます。

  11. ブラウザで「戻る」ボタンをクリックします。

    JSONで元の結果が表示され、7人の従業員がリストされます。

  12. next{$ref}リンクをクリックして、データの次のページにナビゲートします。

    次の7行が、最初、前および次のページへのリンクとともに表示されます。

5.5.4 フィードとしての結果セットの返却(employeesfeed/)

oracle.example.hrモジュールには、emp表からempnoおよびenameの値を返し、それらの値をフィードとして表示するRESTfulサービスを示すemployeesfeed/リソース・テンプレートが含まれます。

フィード・リソース・ハンドラは、SQL問合せを実行し、結果をJSON Feed形式に変換します。フィードの各アイテムには、リソースのサマリーと、リソースの完全形式へのハイパーリンクが含まれます。結果セットの各行の最初の列は、その行の一意の識別子である必要があり、path/to/feed/{id}という形式のハイパーリンクを生成するために使用されます(最初の列の値が{id}の値として使用されます)。その行の他の列は、リソースを要約するとみなされ、フィードに含まれます。リソースの完全形式のリソース・テンプレートも、別途定義する必要があります。

フィードとして結果を返すリソース・テンプレートのその他の例は、oracle.example.hrサービス・モジュールのemployeesfeed/{id}リソース・テンプレートを参照してください。

フィードとして返されるデータを表示するリソース・テンプレートを追加してテストするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・テンプレートの追加先とするRESTfulサービス・モジュールをクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 左のパネル下部で、「テンプレートの作成」をクリックします。

    「リソース・テンプレート」オプションが右側に表示されます。

  4. 「URIテンプレート」に、employeesfeed/と入力します。

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

    employeesfeed/リソース・テンプレートが左のパネルに表示されます。

  6. 従業員のリソース・テンプレートの下で、「ハンドラの作成」をクリックします。

    「リソース・ハンドラ」オプションが表示されます。

  7. 次の選択およびエントリを行います。

    • 方法: 「GET」を選択します。

    • ソース・タイプ: 「フィード」を選択します。

    • セキュア・アクセスが必要: 「いいえ」を選択します。

    • ページ区切りサイズ: 25と入力します。

    • ソース: 次を入力します。

      select empno, ename from emp  order by deptno, ename
      
    employeesfeed.gifの説明が続きます
    図employeesfeed.gifの説明

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

    GETリソース・ハンドラが左のパネルのemployeesfeed/リソース・テンプレートの下に表示されます。

  9. 「テスト」をクリックします。

    結果には、emp表の各従業員に関するフィードが表示されます。

    employeesfeed_res.gifの説明が続きます
    図employeesfeed_res.gifの説明


注意:

結果が正しくない場合は、employeesfeed/ GETリソース・ハンドラとoracle.example.hr employeesfeed GETリソース・ハンドラを比較します。

5.5.5 PL/SQLブロックに基づく結果セットの返却(empsecformat/{empname})

oracle.example.hrモジュールには、PL/SQLブロックによって書式設定されたSQL問合せの結果を返すRESTfulサービスを示すempsecformat/{empname}リソース・テンプレートが含まれます。

PL/SQLブロックを使用して結果を書式設定するリソース・テンプレートを追加してテストするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・テンプレートの追加先とするRESTfulサービス・モジュールをクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 左のパネル下部で、「テンプレートの作成」をクリックします。

    「リソース・テンプレート」オプションが右側に表示されます。

  4. 「URIテンプレート」に、empsecformat/{empname}と入力します。

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

    empsecformat/{empname}リソース・テンプレートが左のパネルに表示されます。

  6. empsecformat/{empname}リソース・テンプレートの下で、「ハンドラの作成」をクリックします。

    「リソース・ハンドラ」オプションが表示されます。

  7. 次の選択およびエントリを行います。

    • 方法: 「GET」を選択します。

    • ソース・タイプ: 「PL/SQL」を選択します。

    • セキュア・アクセスが必要: 「いいえ」を選択します。

    • ページ区切りサイズ: 空白にします。

    • ソース: 次を入力します。

      DECLARE
        prevdeptno   number;
        deptloc      varchar2(30);
        deptname     varchar2(30);
        CURSOR getemps IS select * from emp 
                           where ((select job from emp where ename = :empname)  IN ('PRESIDENT', 'MANAGER')) 
                              or deptno = (select deptno from emp where ename = :empname) 
                           order by deptno, ename;
      BEGIN
        sys.htp.htmlopen;
        sys.htp.headopen;
        sys.htp.title('Departments');
        sys.htp.headclose;
        sys.htp.bodyopen;
       
        for emprecs in getemps
        loop
       
            if emprecs.deptno != prevdeptno or prevdeptno is null then
                select dname, loc into deptname, deptloc 
                  from dept where deptno = (select deptno from emp where ename = emprecs.ename);
                if prevdeptno is not null then
                    sys.htp.print('</ul>');
                end if;
                sys.htp.print('Department ' || deptname || ' located in ' || deptloc || '<p/>');
                sys.htp.print('<ul>');
            end if;
       
            sys.htp.print('<li>' || emprecs.ename || ', ' || emprecs.job || ', ' || emprecs.sal || '</li>');
       
            prevdeptno := emprecs.deptno;
       
        end loop;
        sys.htp.print('</ul>');
        sys.htp.bodyclose;
        sys.htp.htmlclose;
      END;
      
    empsecformat.gifの説明が続きます
    図empsecformat.gifの説明

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

    GETリソース・ハンドラが左のパネルのempsecformat/{empname}リソース・テンプレートの下に表示されます。

  9. 「バインド変数の設定」をクリックします。

  10. empnameパラメータに、ADAMSと入力します。

  11. 「テスト」をクリックします。

    Adamsに関する書式設定された結果が表示されます。

    empsecformat_res.gifの説明が続きます
    図empsecformat_res.gifの説明


注意:

結果が正しくない場合は、empsecformat/{empname} GETリソース・ハンドラとoracle.example.hr empsecformat/{empname} GETリソース・ハンドラを比較します。

5.6 RESTfulサービス・モジュールの管理

RESTfulサービス・モジュールは、よく使うテンプレート(リソース・テンプレートと呼ばれる)を共通のUniform Resource Identifiers (URI)接頭辞でグループ化したものです。URI接頭辞の指定はオプションです。RESTfulサービス・モジュールに接頭辞が定義されている場合は、その接頭辞がすべてのリソース・テンプレートの前に付きます。複数のリソース・テンプレートのパターンが1つのリクエストURIに一致する場合は、優先度の値を使用してリソース・テンプレートが選択されます。このような場合、優先度の値が最も高いリソース・テンプレートが選択されます。

内容は次のとおりです。

5.6.1 RESTfulサービス・モジュールの作成

RESTfulサービス・モジュールを作成するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

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

  3. 適切なフィールドに入力し、適切なオプションを選択します。必須フィールドには、赤いアスタリスク(*)が付いています。特定のオプションの詳細は、そのオプションのアイテム・ヘルプを参照してください。

  4. RESTfulサービス・モジュールの設定で、次を指定します。

    • 名前(必須): RESTfulサービス・モジュールの名前を指定します。

    • URI接頭辞: URIテンプレートの接頭辞を指定します。

    • 使用可能な起点: リソース・テンプレートへのアクセスが許可される起点のカンマ区切りリストを指定します。

    • ステータス: このサービスを使用可能にする場合は「公開」を、しない場合は「未公開」を選択します。

    • ページ区切りサイズ: ページ区切りウィンドウのサイズを指定します。データベース問合せの場合、これは返される行の数です。

    • 必要な権限: このサービス・モジュールへのアクセスに必要なユーザー権限を選択します。

  5. このモジュールにリソース・テンプレートを追加するには、「リソース・テンプレートの追加」で次を指定します。

    • URIテンプレート: Uniform Resource Identifiersを識別するURIテンプレートを入力します。URIテンプレートは、次に示すように、URIを記述する単純な構文です。

      example/{id}
      
    • 優先度: リソース・テンプレートの評価順序を指定します。高い数値から先に評価されます。

    • エンティティ・タグ: リソースのETag HTTPヘッダーの生成方法を指定します。詳細は、アイテム・ヘルプを参照してください。

    • エンティティ・タグ問合せ: カスタム・エンティティ・タグの生成に使用される1つの列と1つの行を返すSQL SELECT文を指定します。このオプションは、「エンティティ・タグ」に「問合せ」を選択した場合にのみ表示されます。

  6. リソース・テンプレートにリソース・ハンドラを追加するには、「リソース・ハンドラの追加」で次を指定します。

    • 方法: リソース・ハンドラに使用するHTTPメソッドを指定します。オプションには、「GET」、「DELETE」、「POST」、「PUT」があります。詳細は、アイテム・ヘルプを参照してください。

    • ソース・タイプ: 選択したHTTPメソッドのソース実装を選択します。オプションには、「問合せ」、「1行問い合せる」、「PL/SQL」、「フィード」、「メディア・リソース」があります。

    • 書式: 結果を返す方法を定義します。オプションには、「JSON」、「CSV」があります。

    • ソース: 選択したHTTPメソッドを処理するSQL問合せまたはPL/SQLブロックを指定します。


    注意:

    追加のリソース・ハンドラを定義するには、リソース・ハンドラの作成ウィザードを完了してから、作成したリソース・ハンドラを編集します。

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

    RESTfulサービス・モジュールのページが表示されます。

5.6.2 RESTfulサービス・モジュールの編集

RESTfulサービス・モジュールには、関連するリソース・テンプレートおよびリソース・ハンドラを含むことができます。特定のRESTfulサービス・モジュールの編集プロセス時に、関連する任意のリソース・テンプレートおよびリソース・ハンドラに変更を行うことができます。

RESTfulサービス・モジュールを編集するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 編集するモジュールの名前をクリックします。

    RESTfulサービス・モジュールの編集ページが表示されます。

    r_edit.gifの説明が続きます
    図r_edit.gifの説明


    注意:

    リソース・テンプレートおよびリソース・ハンドラを表示、編集および作成するには、左のペインにあるRESTfulサービスのツリーを使用します。

  3. RESTfulサービス・モジュールの設定を編集するには、「RESTfulサービス・モジュール」の下で、右のペインのフィールドを変更します。詳細は、「RESTfulサービス・モジュールの作成」を参照してください。

  4. リソース・テンプレートを編集するには、次のステップを実行します。

    1. 左のパネルにあるRESTfulサービスのツリーで、編集するリソース・テンプレートを選択します。リソース・テンプレートのオプションが右のパネルに表示されます。

    2. 変更を加えます。詳細は、「リソース・テンプレートの追加」を参照してください。

    3. 「変更の適用」をクリックします。

  5. リソース・ハンドラを編集するには、次のステップを実行します。

    1. RESTfulサービスのツリーで、編集するリソース・ハンドラを選択します。リソース・ハンドラのオプションが右のパネルに表示されます。

    2. 変更を加えます。詳細は、「リソース・ハンドラの追加」を参照してください。

    3. 「変更の適用」をクリックします。

  6. 「変更の適用」をクリックします。

5.6.3 RESTfulサービス・モジュールの削除

RESTfulサービス・モジュールを削除すると、モジュールとともに、このモジュールに関連するすべてのリソース・テンプレートおよびリソース・ハンドラが削除されます。

RESTfulサービス・モジュールを削除するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 削除するモジュールの名前をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「削除」をクリックします。

  4. 「OK」をクリックして処理を確認します。

    「RESTfulサービス」ホームページが表示されます。

5.6.4 RESTfulサービス権限の管理

RESTful Webサービス・モジュールにアクセスする権限は、Application Expressユーザー・グループに属するApplication Expressユーザーに限定することができます。

RESTfulサービス権限の割当てによってRESTfulサービス・モジュールを保護するには、次のステップを実行します。

  1. Application Express管理を使用してApplication Expressユーザー・グループを定義します。『Oracle Application Express管理ガイド』のグループを使用したApplication Expressユーザーの管理に関する説明を参照してください。

  2. 1つ以上のユーザー・グループに基づくRESTfulサービス権限を作成します。「RESTfulサービス権限の作成」を参照してください。

  3. この権限で保護されるRESTful Webサービス・モジュールを指定します。「RESTful Webサービス・モジュールへの権限の割当て」を参照してください。

内容は次のとおりです。

5.6.4.1 RESTful Webサービス・モジュールへの権限の割当て

RESTful Webサービス・モジュールに権限を割り当てる方法は複数あります。


注意:

RESTfulサービス権限を削除すると、その権限によって保護されていたすべてのRESTfulサービス・モジュールが保護されなくなります。「RESTfulサービス権限の削除」を参照してください。

5.6.4.2 RESTfulサービス権限の作成

RESTfulサービス権限を作成して、1つ以上のRESTful Webサービス・モジュールに対するアクセスを特定のユーザーに限定できます。RESTfulサービス権限には、1つ以上のユーザー・グループに属するユーザーを含むことができます。この権限によって保護されるRESTful Webサービス・モジュールでは、RESTfulサービス・モジュール・ページの「必要な権限」に、権限の名前が表示されます。

RESTfulサービス権限を作成するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 「タスク」で、「RESTfulサービス権限」リンクをクリックします。

    RESTfulサービス権限ページが表示されます。

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

    RESTfulサービス権限の詳細ページが表示されます。

  4. 「名前」に、権限を示す名前を入力します。

  5. 「ラベル」に、権限を示すラベル値を入力します。

  6. 「割当て済グループ」に、この権限の割当て先とするユーザー・グループを選択します。

  7. 「説明」に、この権限の説明を入力します。

  8. 「保護されたモジュール」で、矢印を使用して、この権限の割当て先とするモジュールを選択します。

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

    RESTfulサービス権限ページが表示されます。

適切なモジュールに権限が割り当てられたことを確認するには、次のステップを実行します。

  1. ブレッドクラムで「RESTfulサービス」をクリックします。

    RESTfulサービス・ページが表示されます。

  2. 保護されている「RESTfulサービス・モジュール」をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「必要な権限」に、作成したRESTfulサービス権限が表示されることを確認します。

  4. この権限に割り当てられたすべてのモジュールが保護されていることを確認するには、これらの検証ステップを繰り返します。

5.6.4.3 RESTfulサービス権限の編集

RESTfulサービス権限は、変更できます。保護された特定のモジュールに対する変更は、影響を受けるモジュールのRESTfulサービス・モジュール・ページで、「必要な権限」設定に反映されます。

RESTfulサービス権限を編集するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 「タスク」で、「RESTfulサービス権限」リンクをクリックします。

    RESTfulサービス権限ページが表示されます。

  3. 「RESTfulサービス権限」をクリックします。

    RESTfulサービス権限の詳細ページが表示されます。

  4. 変更を加えます。

  5. 「変更の適用」をクリックします。

    RESTfulサービス権限ページが表示されます。

5.6.4.4 RESTfulサービス権限の削除

RESTfulサービス権限は、削除できます。権限を削除すると、その権限によって保護されていたすべてのRESTfulサービス・モジュールは、他の権限が再割当てされるまで保護されなくなります。

RESTfulサービス権限を削除するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 「タスク」で、「RESTfulサービス権限」リンクをクリックします。

    RESTfulサービス権限ページが表示されます。

  3. 「RESTfulサービス権限」をクリックします。

    RESTfulサービス権限の詳細ページが表示されます。

  4. 「削除」をクリックします。

    RESTfulサービス権限ページが表示されます。

5.6.5 RESTfulサービス・モジュールのエクスポート

RESTfulサービス・モジュールのメタデータは、SQLスクリプト形式でファイルにエクスポートできます。エクスポートされたファイルは、同じインスタンスまたは互換性のある他のApplication Expressインスタンスにインポートできます。「RESTfulサービス・モジュールのインポート」を参照してください。

RESTfulサービス・モジュールをエクスポートするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 「タスク」で、「エクスポート」リンクをクリックします。

    RESTfulサービスのエクスポート・ページが表示されます。

  3. 「RESTfulサービス」で、次のいずれかを実行します。

    • 1つのモジュールをエクスポートするには、そのモジュール名を選択します。

    • すべてのモジュールをエクスポートするには、「すべてのサービス」を選択します。

  4. 「エクスポート」をクリックします。

    開始ダイアログが表示されます。

  5. エクスポート・オプションを選択します。

  6. 「OK」をクリックします。

5.6.6 RESTfulサービス・モジュールのインポート

SQLスクリプト形式でファイルにエクスポートされたRESTfulサービス・モジュールのメタデータは、インポートできます。インポートするモジュールは、同じインスタンスまたは互換性のある他のApplication Expressインスタンスにエクスポートされている必要があります。「RESTfulサービス・モジュールのエクスポート」を参照してください。


注意:

インポートするモジュールに、このワークスペースに存在するRESTfulサービス名が含まれる場合は、既存のRESTfulサービスが削除され、インポートするモジュールの定義で置き換えられます。

RESTfulサービス・モジュールをインポートするには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 「タスク」で、「インポート」リンクをクリックします。

    RESTfulサービスのインポート・ページが表示されます。

  3. 「ファイルのインポート」で、インポート・ファイルをブラウズして選択します。

  4. 「ファイルのキャラクタ・セット」で、インポート・ファイルで使用するキャラクタ・セットを選択します。

  5. 「インポート」をクリックします。

    RESTfulサービス・ページが表示されます。

5.7 リソース・テンプレートの管理

リソース・テンプレートは、URIをグループ化して、特定のRESTfulサービス・モジュールに関連付ける方法です。リソース・テンプレートには、1つ以上のリソース・ハンドラを含むことができます。1つのHTTPメソッドに指定できるリソース・ハンドラは1つのみです。たとえば、リソース・テンプレートには、1つのGETメソッドや1つのDELETEメソッドのみを指定できます。

内容は次のとおりです。

5.7.1 リソース・テンプレートの追加

RESTfulサービス・モジュールにリソース・テンプレートを追加するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・テンプレートを作成するRESTfulサービスをクリックします。

  3. 「RESTfulサービス」ツリーで、「テンプレートの作成」をクリックします。

    リソース・テンプレートの設定が右のパネルに表示されます。

  4. 適切なフィールドに入力し、適切なオプションを選択します。必須フィールドには、赤いアスタリスク(*)が付いています。特定のオプションの詳細は、そのオプションのアイテム・ヘルプを参照してください。

  5. 次を指定します。

    • URIテンプレート: Uniform Resource Identifiersを識別するURIテンプレートを入力します。URIテンプレートは、次に示すように、URIを記述する単純な構文です。

      example/{id}
      
    • 優先度: テンプレートの評価順序を指定します。高い数値から先に評価されます。

    • エンティティ・タグ: リソースのETag HTTPヘッダーの生成方法を指定します。詳細は、アイテム・ヘルプを参照してください。

    • エンティティ・タグ問合せ: カスタム・エンティティ・タグの生成に使用される1つの列と1つの行を返すSQL SELECT文を指定します。このオプションは、「エンティティ・タグ」に「問合せ」を選択した場合にのみ表示されます。

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

5.7.2 リソース・テンプレートの編集

リソース・テンプレートを編集するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 編集するリソース・テンプレートが属するモジュールの名前をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「RESTfulサービス」ツリーで、編集するリソース・テンプレートをクリックします。

    選択したリソース・テンプレートは「RESTfulサービス」ツリーでハイライトされ、対応するリソース・テンプレートの設定が右のパネルに表示されます。

  4. 必要な変更を行います。詳細は、「リソース・テンプレートの追加」を参照してください。

  5. 「変更の適用」をクリックします。

5.7.3 リソース・テンプレートの削除

リソース・テンプレートを削除すると、テンプレートとともに、このテンプレートに関連するすべてのリソース・ハンドラが削除されます。

リソース・テンプレートを削除するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. 更新するモジュールの名前をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「RESTfulサービス」ツリーで、削除するリソース・テンプレートをクリックします。

    リソース・テンプレートの設定が右のパネルに表示されます。

  4. 「削除」をクリックします。

  5. 「OK」をクリックして処理を確認します。

    RESTfulサービス・モジュールが表示されます。

5.8 リソース・ハンドラの管理

リソース・ハンドラは、特定のHTTPメソッドを処理するための問合せまたは無名PL/SQLブロックです。リソース・テンプレートには複数のリソース・ハンドラを定義できますが、HTTPメソッドに定義できるリソース・ハンドラは1つのみです。

リソース・ハンドラのパラメータを手動で定義すると、リソース・ハンドラのHTTPヘッダーにバインドすることも、URIテンプレート・パラメータを特定のデータ型にキャストすることもできます。URIテンプレートで宣言されたパラメータは、リソース・ハンドラに暗黙的に渡されます。たとえば、生成される表示内容をローカライズするには、リソース・ハンドラがHTTPのAccept-Languageヘッダーの値を知る必要があります。

内容は次のとおりです。

5.8.1 リソース・ハンドラの追加

リソース・テンプレートにリソース・ハンドラを追加するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・ハンドラの追加先とするRESTfulサービスをクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 左のパネルの関連するリソース・テンプレートの下で、「ハンドラの作成」をクリックします。

    リソース・ハンドラの設定が右のパネルに表示されます。

  4. 適切なフィールドに入力し、適切なオプションを選択します。必須フィールドには、赤いアスタリスク(*)が付いています。特定のオプションの詳細は、そのオプションのアイテム・ヘルプを参照してください。

  5. 「リソース・ハンドラ」で、次を指定します。

    • 方法: リソース・ハンドラに使用するHTTPメソッドを指定します。詳細は、アイテム・ヘルプを参照してください。

    • ソース・タイプ: リソースの生成に使用する計画タイプを指定します。詳細は、アイテム・ヘルプを参照してください。

    • セキュア・アクセスが必要: HTTPSなど、セキュアなチャネルを介してリソースにアクセスするかどうかを指定します。セキュア・アクセスが必要な場合は、「はい」に設定します。

    • ページ区切りサイズ: ページ区切りウィンドウのサイズを指定します。データベース問合せの場合、これは返される行の数です。

  6. 「ソース」に、選択したHTTPメソッドを処理するSQL問合せまたはPL/SQLブロックを入力します。詳細は、ページ下部の「例」をクリックします。

  7. リソース・ハンドラの動作をテストするには、次のステップを実行します。

    1. 「変更の適用」をクリックします。

    2. SQL問合せまたはPL/SQLブロックにバインド変数が含まれる場合は、テストの前に、「バインド変数の設定」をクリックしてバインド変数を定義します。

    3. 「テスト」をクリックします。

      新しいウィンドウに、RESTfulサービスを実行した結果がJSONで表示されます。テストに使用されるURLは、URI接頭辞およびURIテンプレートの値と、任意のパラメータで構成されます。


      注意:

      テスト結果の読取りを簡単にするには、ブラウザにJSON Viewerをインストールすることをお薦めします。

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

    RESTfulサービス・モジュールのページが表示されます。

  9. リソース・ハンドラにパラメータを追加するには、次のステップを実行します。

    1. 「パラメータの作成」をクリックします。

      「リソース・ハンドラ・パラメータ」パネルに、パラメータ設定が表示されます。

    2. 「名前」に、特定のパラメータ名を入力します。

    3. 「バインド変数名」に、SQL問合せまたはPL/SQLブロック内で使用されるパラメータのバインド変数名を入力します。

    4. 「アクセス方法」で、HTTPメソッドを選択します。オプションには、「IN」、「IN/OUT」または「OUT」があります。「URIテンプレート」パラメータの設定は、「IN」のみです。ヘッダー・パラメータに「IN」の値を指定すると、HTTPリクエストにヘッダーが使用されます。「IN/OUT」の値を指定すると、その値がHTTPリクエストとレスポンスの両方に使用されます。「OUT」の値を指定すると、その値がHTTPレスポンスのみに使用されます。

    5. 「ソース・タイプ」で、パラメータ・ソース・タイプを選択します。

    6. 「パラメータ・タイプ」で、パラメータのデータ型を選択します。

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

      リソース・ハンドラ・ページが表示され、右のパネル下部の「パラメータ」に、追加したパラメータが表示されます。

    8. 追加する各パラメータについて、ここで説明したステップを繰り返します。

5.8.2 リソース・ハンドラの編集

リソース・ハンドラを編集するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・ハンドラが属するリソース・サービス・モジュールの名前をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「RESTfulサービス」ツリーで、編集するリソース・ハンドラをクリックします。

    リソース・ハンドラの設定が右のパネルに表示されます。

  4. 必要な変更を行います。詳細は、「リソース・ハンドラの追加」を参照してください。

  5. 「変更の適用」をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

5.8.3 リソース・ハンドラの削除

リソース・ハンドラを削除するには、次のステップを実行します。

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックして、「RESTfulサービス」をクリックします。

    「RESTfulサービス」ホームページが表示されます。

  2. リソース・ハンドラが属するモジュールの名前をクリックします。

    RESTfulサービス・モジュールのページが表示されます。

  3. 「RESTfulサービス」ツリーで、削除するリソース・ハンドラをクリックします。

    リソース・ハンドラの設定が右のパネルに表示されます。

  4. 「削除」をクリックします。

  5. 「OK」をクリックして処理を確認します。

    RESTfulサービス・モジュールが表示されます。