表ハイパーリンクまたは表ハイパーリンク・グループを使用したデータへのアクセス

表のハイパーリンク・データは、JSON形式で取得および返され、ページ付けされます。

表ハイパーリンク・データには、ブラウザまたは任意のRESTクライアントを使用してアクセスできます。返されるデータは、一度に最大100レコードにアクセスできるようにページ区切りされ、レスポンスの合計データ・サイズは1MBに制限されます。limit問合せパラメータを指定して、フェッチされるレコード数を制限できます。表ハイパーリンクの認証が失敗した場合、または要求された表ハイパーリンクが期限切れの場合、表ハイパーリンク・データの取得はブロックされます。

表ハイパーリンクまたは表ハイパーリンク・グループを作成する場合は、consistentパラメータを設定して、コンシューマがデータにアクセスするときに、プロデューサが様々なページにデータを一貫して提供するように指定できます。consistentTRUEに設定されている場合、プロデューサは、データの複数のページにアクセスするコンシューマに一貫性のあるデータを提供します。つまり、コンシューマの最初のアクセスと、表ハイパーリンクに関連付けられたページに対する後続のデータ・リクエストでは、最初のページのリクエストと同じデータ・スナップショット(SCN)が使用されます。

ノート

ノート:表のハイパーリンク・データは、ブラウザからアクセスすると表形式で表示できます。詳細は、表ハイパーリンクまたは表ハイパーリンク・グループを使用した表形式のデータへのアクセスを参照してください。

表ハイパーリンクを使用したデータへのアクセス

表のハイパーリンク・データは、JSON形式で取得および返され、ページ付けされます。

たとえば、表ハイパーリンクを使用してレスポンスを処理するには:

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data

表ハイパーリンク・レスポンスには、データに複数のページが含まれる場合、前のページまたは次のページのリンクが含まれます。これにより、データのフェッチ中にいずれかの方向に移動できます。JSONには、現在のページを指すselfリンクと、フェッチに使用可能なデータがさらにあるかどうかを示すhasMore属性も含まれています。

レスポンス形式は次のとおりです。

{
    "items": [],                 <-- Array of records from database
    "hasMore": true OR false,    <-- Indicates if there are more records to fetch or not
    "limit": Number,             <-- Indicates number of records in the page. Maximum allowed number is 100.
    "offset": Number,            <-- Offset indicating the start of the current page
    "count": Number,             <-- Count of records in the current page
    "links": [
        {
            "rel": "self",
            "href": "{Link to table hyperlink url for the current page}"
        },
        {
            "rel": "previous",
            "href": "{Link to table hyperlink url for the previous page}"
        },
        {
            "rel": "next",
            "href": "{Link to table hyperlink url for the next page}"
        }
    ]
}

たとえば、表ハイパーリンクからのレスポンスの例を次に示します(わかりやすくするために改行が追加されています)。

{"items":[
{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Yew","HEIGHT":11},{"COUNTY":"First","SPECIES":"Willow","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":29},{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},{"COUNTY":"Main","SPECIES":"Spruce","HEIGHT":8},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},{"COUNTY":"First","SPECIES":"Maple","HEIGHT":16},
{"COUNTY":"Main","SPECIES":"Aspen","HEIGHT":35},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":27},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":37},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78},{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78}],

"hasMore":false,
"limit":100,
"offset":0,
"count":30,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data"}
]}

表ハイパーリンクを使用したバインド変数のデータへのアクセス

表ハイパーリンクの生成時にSELECT文にバインド変数がある場合は、表ハイパーリンクの生成時にdefault_bind_valuesパラメータを使用してデフォルトのバインド変数値を指定するか、表ハイパーリンク・データにアクセスするために問合せパラメータとしてバインド変数値を渡す必要があります。

バインド変数のサポートは、NUMBERおよびVARCHAR2列タイプで使用できます。

たとえば、次のSQL文を使用して表ハイパーリンクが生成され、default_bind_valuesパラメータを指定しない場合です。

sql_statement = 'SELECT * FROM TREE_DATA WHERE COUNTY = :countyName'

データにアクセスするには、バインド変数を追加し、値を問合せパラメータとして指定する必要があります。たとえば:

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data?countyNAME=MAIN

DBMS_DATA_ACCESS.CREATE_URLdefault_bind_valuesパラメータが含まれている場合、バインド値をURLで指定する必要はありません。

たとえば、DBMS_DATA_ACCESS.CREATE_URLに次のパラメータがあるとします。

sql_statement = 'SELECT * FROM TREE_DATA WHERE COUNTY = :countyNAME',
default_bind_values => '{"countyNAME" : "First"}'

この場合、パラメータdefault_bind_valuesはバインド変数の値を定義し、問合せパラメータとして値を指定する必要はありません(デフォルト値が指定されます)。

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data

{"items":[
{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51}],
"hasMore":false,
"limit":100,
"offset":0,
"count":6,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/gTlbq...example/data"}
]}

default_bind_valuesでバインド変数値が定義されている場合、問合せパラメータとして値を明示的に指定することで、バインド変数値をオーバーライドできます。次に例を示します。

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data?countyNAME=MAIN

詳細は、CREATE_URLプロシージャを参照してください。

パスワード保護表ハイパーリンクのデータへのアクセス

passwordパラメータをDBMS_DATA_ACCESS.CREATE_URLとともに含めて、パスワードで保護された表のハイパーリンクをURL値とともに作成する場合、生成ではパスワードをコンシューマと共有する必要があります。コンシューマは、URLとパスワードの両方を使用してデータにアクセスし、パスワードを指定して、RESTを介して基本認証を使用してデータにアクセスします。

たとえば:

HEADER
Authorization: Basic password
GET https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Vdtv..._example_wxd0PN/data

表ハイパーリンク・グループを使用したデータへのアクセス

表のハイパーリンク・グループ・データは、JSON形式で取得および返され、ページ区切りされます。

たとえば、表ハイパーリンク・グループを使用してレスポンスを処理するには、次のようにします。

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data

表のハイパーリンク・グループのレスポンスには、メンバーURL情報が含まれます。

たとえば、表ハイパーリンク・グループのレスポンスの例を次に示します。

{  "member_urls": [
    {
      "id": "{member_id}",
      "name": "{member_name}",
      "description": "{member_description}"
    },
    .....
    ]
}

次に、指定されたmember_id値の1つを使用して、表ハイパーリンク・グループ・メンバーのデータにアクセスするために次のREST APIを使用できます。次に例を示します。

Get https://dataaccess.adb.{region_name}.oraclecloudapps.com/adb/p/{group_par_url_token}/data?member_id={member_id}

Response
200 OK - Success

{
    "items": [],                 <-- Array of records from database
    "hasMore": true OR false,    <-- Indicates if there are more records to fetch or not
    "limit": Number,             <-- Indicates number of records in the page. Maximum allowed number is 100.
    "offset": Number,            <-- Offset indicating the start of the current page
    "count": Number,             <-- Count of records in the current page
    "links": [
        {
            "rel": "self",
            "href": "{Link to Table Hyperlink for the current page}"
        },
        {
            "rel": "previous",
            "href": "{Link to Table Hyperlink for the previous page}"
        },
        {
            "rel": "next",
            "href": "{Link to Table Hyperlink for the next page}"
        }
    ]
}