ユーザーガイド > リソースの公開 > OData機能について > OData機能
 
OData機能
再フォーマットされた結果
TDVのデフォルトでは、データベースデータサービスとして公開されているすべてのリソースは、XMLベースのAtom形式のODataを介して利用できます。クライアントインターフェイス(データを要求するアプリケーション)は、クライアントインターフェイス定義で(デフォルトの$format=atomの代わりに) $format=jsonを使用して、Atomの結果をJSONに再フォーマットするようにODataに指示できます。例:
http://services.odata.org/OData/OData.svc/ds_orders?$format=json
 
JSON応答のみが必要なクライアントは、ヘッダーを次のようなものに設定する可能性があります。
GET /OData/OData.svc/ds_orders HTTP/1.1 host: services.odata.org accept: application/json
 
クライアントアプリケーションは、特定のコンテンツタイプのみをサポートするか、すべてのコンテンツタイプをサポートするかを選択できます。すべてのコンテンツタイプを受け入れる場合、ヘッダーは次のようになります。
GET /OData/OData.svc/ds_orders HTTP/1.1 host: services.odata.org
システムクエリーオプション
データが返される前に、ODataサーバー側で非修飾レコードを除外するオプションを使用できます。これにより、TDV側でSQL WHERE句を使用してフィルターを適用する場合と比較して、転送されるデータの量を大幅に削減し、パフォーマンスを向上させることができます。
Expandオプション
expandオプションを使用すると、レコードを取得し、関連するオブジェクトを含めることができます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$expand=orders
 
製品のエンティティーセット内のエンティティーごとに、関連するすべての注文の値がインラインで表されます。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products('?$expand=orders')
Filterオプション
filterオプションを使用すると、特定の条件を満たすレコードのみを取得できます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$filter=orderid gt 1000
 
このリクエストはクエリーに使用され、orderid値が1000より大きいレコードのみを返します。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products('$filter=orderid gt 1000')
OrderByオプション
orderbyオプションを使用すると、返されたレコードを指定したエンティティーの値の順序で並べ替えることができます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$orderby=customerid
 
このリクエストは、customerid値の順序でレコードを表示します。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products('$orderby=customerid')
Skipオプション
skipオプションを使用すると、特定の行数をスキップしてレコードを取得できます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$skip=2
 
このリクエストは、最初の2行を除くすべてのレコードを返します。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/OData.svc/ds_orders('$ skip=2')
Topオプション
topオプションを使用すると、最初のn件のレコードを取得できます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$top=4
 
このリクエストは最初の4行を返します。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products('$ top=4')
Selectオプション
selectオプションを使用すると、指定した名前の列の値を取得できます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$select=shipname
 
返されるすべてのレコードには、shipnameという名前の列の値のみが表示されます。他の列には[NULL]が表示されます。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products(' ?$select=shipname')
オプションの組み合わせ
システムクエリーオプションの間にアンパサンド(&)を挟むことで、各オプションを連結できます。例:
http://services.odata.org/OData/OData.svc/ds_orders/?$filter=orderid gt 1000&$top=2
 
このリクエストは、orderidが1000より大きい最初の2行を返します。
対応するTDV SQLクエリーは次のようになります。
SELECT * from /shared/OData/ODataDemo/DemoService/Products(' ?$filter=orderid gt 1000&$top=2 ')