RESTful Web サービス

Denodo Platform の RESTful Web サービスは、Virtual DataPort サーバー全体のコンテンツを公開する HTTP サービスです。

ドキュメントに明記がない限り、RESTful Web サービスは、公開されている REST Web サービスと同様に使用できます。入力パラメータは REST Web サービスと同じあり、出力の形式も同様です。

このサービスは、XML ドキュメントと JSON ドキュメントのほか、より理解しやすい HTML ドキュメントも出力できます。

この Web サービスは http://<host of the Denodo server>:9090/denodo-restfulws の URL でデプロイされ、以下のタイプのリソースを公開しています。

RESTful Web サービスで公開されているリソースのタイプ

リソースのタイプ

URI

出力

データベースのリスト

/

データベースのリストを返します (RESTful Web サービスでのみ使用できます。公開されている REST Web サービスでは使用できません)。

データベース

/<database name>

データベースのビューのリストと、各ビューにアクセスするためのリンクを返します。

REST Web サービスの場合、Web サービスによって公開されているビューのリストを返します。

ビュー

/<database name>/views/<view name>

ビューのデータと、ビューの説明を返します (データは「SELECT * FROM view」クエリの実行結果と同じです)。

ビューの行

/<database name>/views/<view name>/<pk field 1>、<pk field 2>

ビューにプライマリキーが定義されている場合 、ビューにある各行のデータが表示されます。

結果セットの行数

/<database name>/views/<view name>/$count

ビューの行数が返されます。フィールドによるフィルタおよび $filter パラメータ (または、そのいずれか) と組み合わせて使用できます。

結果セットの行数の取得の詳細については、「 結果セットの行数の取得 」を参照してください。

ビューのメタデータ

/<database name>/views/<view name>/$metadata

ビューのメタデータが返されます。このメタデータとして、ビューの説明のほか、ビューのスキーマとアソシエーションを取得するための URL があります。

この URL は XML 表現と JSON 表現でのみサポートされ、HTML 表現ではサポートされていません。したがって、ビューのメタデータを取得するには、適切な Accept ヘッダーを送信するか、URL に ?$format=xml または ?$format=json を追加する必要があります。

ビューのスキーマ

/<database name>/views/<view name>/$schema

ビューのスキーマが返されます。スキーマは、ビューのフィールドと型のリストです。

この URL は XML 表現と JSON 表現でのみサポートされ、HTML 表現ではサポートされていません。したがって、スキーマを取得するには、適切な Accept ヘッダーを送信するか、URL に ?$format=xml または ?$format=json を追加する必要があります。

RESTful Web サービスのビューのスキーマではなく、REST Web サービスのビューのスキーマをリクエストする場合は以下の点を考慮します。

  • REST サービスでは、公開されているフィールドのみが返されます。このサービスの構成で公開から除外したフィールドは返されません。

  • REST サービスでは、フィールド名として、ビューのフィールド名ではなく、Web サービスで表示されるフィールド名が返されます。このサービスの構成で変更したフィールド名は返されません。

ビューのスキーマ (XSD)

/<database name>/views/<view name>/$xsd

ビューのスキーマが XSD 形式で返されます。 /<database name>/views/<view name>/$schema?$format=xml と等価です。

この URL は XML 表現でのみサポートされています。

アソシエーション

/<database name>/views/<view name>/$associations

ビューのアソシエーションが返されます。

この URL は XML 表現と JSON 表現でのみサポートされ、HTML 表現ではサポートされていません。したがって、アソシエーションを取得するには、適切な Accept ヘッダーを送信するか、URL に ?$format=xml または ?$format=json を追加する必要があります。

REST Web サービス (RESTful Web サービスではありません) のビューのアソシエーションをリクエストすると、ビューのすべてのアソシエーションではなく、そのサービスで公開されているアソシエーションのみが返されます。

OpenAPI 3/仕様

/OpenAPIv3/openapi.json /OpenAPIv3/openapi.yaml

REST Web サービスでのみ使用できます。RESTful Web サービスでは使用できません。

REST Web サービスで利用可能な操作、入力パラメータ、出力などを記述した OpenAPI 3 ドキュメントを返します。この情報には Web サービスが公開しているビューが反映されます。

この OpenAPI ドキュメントを https://editor.swagger.io に読み込み、仕様の詳細の視覚化、クライアントコードの自動生成、および Web サービスにアクセスするためのリクエスト例の取得を行うことが可能です。

OpenAPI 2/Swagger 仕様

/OpenAPI/swagger.json /OpenAPI/swagger.yaml

REST Web サービスでのみ使用できます。RESTful Web サービスでは使用できません。

公開されている REST 用の OpenAPI 2 / Swagger ドキュメントを返します。「OpenAPI バージョン 3」ドキュメントと同様ですが、バージョン 2.0 の仕様に準拠します。

RESTful Web サービスを呼び出す手順の例

  • https://denodo-server.acme.com:9443/denodo-restfulws/admin returns the list of views of the database admin.

  • https://denodo-server.acme.com:9443/denodo-restfulws/admin/views/customer からは、 admin データベースの customer ビューの内容が返されます。

  • https://denodo-server.acme.com:9443/denodo-restfulws/admin/views/customer/1/orders は、 customer テーブルの中でプライマリキーが 1 である行の orders を、マッピングを使用して閲覧します。

Web コンテナーで HTTPS を有効化していない場合、ポートは 9090 です。


RESTful Web サービスの URI 形式に関する他の注意事項

  • URL では大文字と小文字が区別されます。したがって、 TestView ビューを呼び出すには、 http://.../admin/views/testview ではなく、 http://.../views/TestView を使用する必要があります。

  • プライマリキーの値に文字 , を使用している場合、それを %2C で置き換えます。文字 , は、複数フィールドで構成するプライマリキーの値を記述するための区切り文字であるからです。たとえば、http://.../support/views/viewA/1,value%2Cwith%2Ccommas とします。

  • $filter パラメータ以外では、文字列リテラルを引用符で囲まないでください (RESTful Web サービスのパラメータの詳細については、「 RESTful Web サービスの入力パラメータ 」を参照)。

RESTful 規則に従い、RESTful Web サービスによって Virtual DataPort に送信されるステートメントは、リクエストの HTTP メソッドに依存します。

表「 RESTful Web service: HTTP methods and their equivalent VQL statements 」に、リクエストの HTTP メソッドに応じて RESTful Web サービスから送信されるクエリのタイプ、およびそのタイプに応じた URL の構文を示します。GET リクエストでは、構文が大きく異なることがあるので、それについては以降で説明します。

RESTful Web サービス: HTTP メソッドおよびそれと等価な VQL ステートメント

VQL ステートメント

HTTP メソッド

リクエストの URL の構文

SELECT

GET

https://denodo-server.acme.com:9443/denodo-restfulws/

INSERT

POST

https://denodo-server.acme.com:9443/denodo-restfulws/<database name>/views/<view name>

UPDATE

PUT

https://denodo-server.acme.com:9443/denodo-restfulws/<database name>/views/<view name>/<primary key value>

DELETE

DELETE

https://denodo-server.acme.com:9443/denodo-restfulws/<database>/views/<view name>/<primary key value>