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

前
 
次
 

5 RESTfulサービスの使用

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


注意:

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

内容は次のとおりです。

RESTとは

Representational State Transfer (REST)は、World Wide Webのような分散ハイパーメディア・システムのためのソフトウェア・アーキテクチャのスタイルです。サービスは、RESTの原則に適合する場合にRESTfulとして記述されます。RESTの詳細な説明はこのドキュメントの範囲を外れますが、RESTfulサービスには次の特性があります。

RESTfulサービスについて

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

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

RESTfulサービスを作成する場合、次のように、実行するリクエスト、レスポンスおよび操作の構造に関する必要な情報を提供します。


参照:

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

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

RESTfulサービスの要件

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

RESTfulサービスへのアクセス

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

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

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

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

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

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

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

Application Express Workspaceは、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リソース・テンプレートに対して次の結果が期待されます。

結果セットを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 Resrouce 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. 保存されたファイルをMicrosoft Excelまたは別のエディタで開き、CSVファイルの内容を表示します。

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

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


    注意:

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

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

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

oracle.example.hrモジュールには、指定したidに基づいてJSON形式で1行のデータを返す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問合せを実行します。このオプションは、HTTPメソッドのGETを選択した場合にのみ使用できます。

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

    • ページ区切りサイズ - blankと入力します。この場合、1つのレコードのみが取得されるため、ページ区切りを設定する必要はありません。

    • ソース - 次のように入力します。

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

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

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

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

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

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

    ダイアログが表示され、7876という従業員IDを持った従業員レコードの結果が表示されます。

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


注意:

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

ページ区切りが設定された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. 「作成」をクリックします。

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

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

    JSONの結果が表示されます。各アイテムのuri:{$ref}は、リンクに指定したIDに対応したemployees/{id} RESTfulサービスを起動します。


    注意:

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

  10. empno 7369のリンク内の最初のuri:{$ref}リンクをクリックします。

    7369に対応した個人の従業員レコードが表示されます。

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

    7人の従業員を表示した元のJSON結果が表示されます。

  12. next{$ref}リンクをクリックして、次のデータ・ページに移動します。

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

結果セットをフィードとして返す(employeesfeed/)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    結果では、emp表の従業員ごとにフィードが表示されます。


注意:

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

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. 「作成」をクリックします。

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

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

  10. empnameパラメータの場合は、ADAMSと入力します。

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

    Adamsの書式化された結果が表示されます。

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


注意:

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

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

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

内容は次のとおりです。

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

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

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

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

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

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

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

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

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

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

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

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

    • 「必要な権限」 - このサービス・モジュールにアクセスするために必要なユーザー権限を選択します。

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

    • 「URIテンプレート」 - Uniform Resource Identifierを識別するために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サービス・モジュールのページが表示されます。

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. 「変更の適用」をクリックします。

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

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

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

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

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

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

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

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

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

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

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サービス・モジュールへの権限の割当て」を参照してください。

内容は次のとおりです。

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

RESTful Webサービス・モジュールに権限を割り当てるには、次の2つの方法があります。


注意:

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

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. breadcrumbの「RESTfulサービス」をクリックします。

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

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

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

  3. 「必要な権限」に、作成されたRESTfulサービス権限が表示されます。

  4. これらの確認手順を繰り返して、この権限に割り当てられているすべてのモジュールが保護されていることを確認します。

RESTfulサービス権限の編集

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

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

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

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

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

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

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

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

  4. 変更を加えます。

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

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

RESTfulサービス権限の削除

RESTfulサービス権限は削除できます。権限を削除すると、この権限で保護されていたRESTfulサービス・モジュールは、別の権限が割り当てられるまで保護されなくなります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    「オープン中」ダイアログが表示されます。

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

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

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

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


注意:

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

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

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

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

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

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

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

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

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

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

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

リソース・テンプレートは、URIをグループ化し、これを特定のRESTfulサービス・モジュールに関連付けるための手段です。リソース・テンプレートは、1つ以上のリソース・ハンドラを持つことができます。1つのHTTPメソッドにつき許可されているリソース・ハンドラは1つのみです。たとえば、リソース・テンプレートは1つのGETメソッドのみを持つことができ、リソース・テンプレートは1つのDELETEメソッドのみを持つことがでるということです。

内容は次のとおりです。

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

リソース・テンプレートを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. 「作成」をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

内容は次のとおりです。

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

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

  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リクエストとHTTPレスポンスの両方に存在することを示します。OUTの値は、値がHTTPレスポンスにのみ存在することを示します。

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

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

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

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

    8. 追加するパラメータごとに、この項の前述の手順を繰り返します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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