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 形式

表現内容

データベース

/<database name>

データベースの説明およびデータベースに存在するビューのリストが表示されます。また、そのビューのスキーマとエレメントにアクセスするためのリンクも示されます。

ビュー

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

ビューのメタデータおよびビューのエレメントのリストが表示されます。

ビューの行

/<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 2/Swagger 仕様

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

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

公開されている REST Web サービスの OpenAPI 2 / Swagger 仕様が JSON 形式または YAML 形式で返されます。この仕様は、この Web サービスで公開されているビューに基づいており、使用可能な操作、各操作で使用可能なパラメーター、およびそれらの入力スキーマと出力スキーマを規定しています。

生成した仕様は https://editor.swagger.io に読み込むことができます。このエディターでは、仕様の詳細の視覚化、クライアントコードの自動生成、および Web サービスにアクセスするためのリクエスト例の取得ができます。

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

  • http://localhost:9090/denodo-restfulws/admin からは、 admin データベースのビューのリストが返されます。

  • http://localhost:9090/denodo-restfulws/admin/views/customer からは、 admin データベースの customer ビューの内容が返されます。

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


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

http://localhost:9090/denodo-restfulws/

INSERT

POST

http://localhost:9090/denodo-restfulws/<database name>/views/<view name>

UPDATE

PUT

http://localhost:9090/denodo-restfulws/<database name>/views/<view name>/<primary key value>

DELETE

DELETE

http://localhost:9090/denodo-restfulws/<database>/views/<view name>/<primary key value>