OData v4 の機能

サポートされているオペレーター

認証オプション

説明

 

比較オペレーター

 

 

eq

等しい

companyname eq ‘Able Computing’

ne

等しくない

companyname ne ‘Able Computing”

gt

より大きい

price gt 20

ge

以上

price ge 10

lt

より小さい

price lt 20

le

以下

price le 100

論理オペレーター

 

 

and

論理 AND

Price le 200 and Price gt 3.5

or

論理 OR

Price le 3.5 or Price gt 200

not

論理否定

not endswith (Description,'milk')

 

オペレーター

説明

算術オペレーター

 

 

add

加算

Price add 5 gt 10

sub

減算

Price sub 5 gt 10

mul

乗算

Price mul 2 gt 2000

div

除算

Price div 2 gt 4

mod

剰余

Price mod 2 eq 0

グループ化オペレーター

 

 

( )

優先グループ化

(Price sub 5) gt 10

サポートされている関数

関数

文字列関数

 

contains

contains (CompanyName,'freds')

endswith

endswith (CompanyName,'Futterkiste')

startswith

startswith (CompanyName,'Alfr')

length

length (CompanyName) eq 19

indexof

indexof (CompanyName,'lfreds') eq 1

substring

substring (CompanyName,1) eq 'lfreds Futterkiste'

tolower

tolower (CompanyName) eq 'alfreds futterkiste'

toupper

toupper (CompanyName) eq 'ALFREDS FUTTERKISTE'

trim

trim (CompanyName) eq 'Alfreds Futterkiste'

concat

concat (concat (City,', ') , Country) eq 'Berlin, Germany'

日付関数

 

year

year (BirthDate) eq 0

month

month (BirthDate) eq 12

day

day (StartTime) eq 8

hour

hour (StartTime) eq 1

minute

minute (StartTime) eq 0

second

second (StartTime) eq 0

fractionalseconds

second (StartTime) eq 0

date

date (StartTime) ne date (EndTime)

time

time (StartTime) le StartOfDay

totaloffsetminutes

totaloffsetminutes (StartTime) eq 60

now

StartTime ge now ()

mindatetime

StartTime eq mindatetime ()

maxdatetime

EndTime eq maxdatetime ()

算術関数

 

round

round (Freight) eq 32

floor

floor (Freight) eq 32

ceiling

ceiling (Freight) eq 33

タイプ関数

 

cast

cast (ShipCountry,Edm.String)

パブリッシュ リソースのサポート

OData v4 では次がサポートされます。

パブリッシュされたすべてのデータベースと Web サービス リソース。
マスター キーが定義されていないパブリッシュ ビュー。
複数の入力カーソルと出力カーソルを持つプロシージャ。
定義された関係を持つテーブル/ビューのナビゲーション リンクをサポートします。

パラメーターを持つプロシージャを呼び出します。

http://dvbu-vdi-002:9400/odata4/webservices/ds/LookupProduct (desiredProduct=1

入力カーソルを持つプロシージャを呼び出す

<m:value xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:d="http://docs.oasis-open.org/odata/ns/data" m:type="#Edm.LookupProductReturnType" m:context="http://dvbu-vdi- 002:9400/odata4/webservices/ws$metadata">
<m:parameters>
<d:result m:type="#Collection(Edm.result)">
<m:element>
<d:ProductName>Maxtific 40GB ATA133 7200</d:ProductName>
<d:ProductID m:type="Int32">1</d:ProductID>
<d:ProductDescription> 最大ストレージ 40 GB</d:ProductDescription>
</m:element>
</d:result>
</m:parameters>
</m:value>

ページネーションのサポート

OData v4 は、サーバー側のページネーションをサポートしています。

デフォルトでは、ページサイズは 10,000 行に設定されています。この値は、[Studio] > [管理] > [構成] > [サーバー] > [Web サービス インターフェイス] > [OData] > [ODATA 最大ページサイズ] でサーバー構成を調整することで変更できます。最大ページサイズは 100,000 行を超えることができないことに注意してください。

この設定は、クライアントに送信する行の最大数を決定します。クライアントはこの設定をオーバーライドできますが、この設定を超えることはできません。クライアントは、HTTP ヘッダー「Prefer: odata.maxpagesize=XXX」を介して設定できます。クライアントに返される部分データセットには、「href」値が次の部分データセットの URI である「next」関係を持つ atom:link が含まれます。

さらに、ODATA Skiptoken 設定を調整して、odata システム クエリ オプション $skiptoken を介してサーバー主導のページングを有効にすることができます。このオプションが False に設定されている場合、ページングは代わりに odata システム クエリ オプション $skip を使用するため、パフォーマンスの問題が発生する可能性があります。

1. 以下の例では、クライアントは応答ごとに 8 行のみを要求します。

curl  -u admin:admin "http://localhost:9400/odata4/webservices/soap_test/view_test/CompositeView?\$format=xml"   -H "Prefer: odata.maxpagesize=8"

 

2. サーバーでページネーションが有効になっている場合、応答には、url 属性 skiptoken を含む追加のエレメントが含められます。

<a:link rel="next" href="http://localhost:9400/odata4/webservices/soap_test/view_test/CompositeView?%24format=xml&%24skiptoken=54ed17bcx39b1x4648x8e3axe146c401d935"/></a:feed>

結果セットを繰り返すには、前の応答で提供されたスキップ トークンが必要です。表示する結果セットがさらにある場合、応答は新しいスキップ トークンを生成します。

タイムアウト

サーバー プロパティ OData Timeout を調整することで、OData ページ分割されたリクエストのリクエストタイムアウトを制御できます。これにアクセスするには、[管理] > [構成] > [サーバー] > [Web サービス] > [OData] > [Odata タイムアウト] を選択します。ページ分割されたリクエストの指定値は秒単位です。無制限の場合は 0 を使用します。ODATA タイムアウトを微調整するには、セッションのパージ期間 ([管理] > [構成] > [サーバー] > [ランタイム処理情報] > [セッション]) を調整する必要もあります。

サポートされているクエリ オプション

次のクエリ オプションがサポートされます。

$apply
$count
$expand
$filter
$levels
$orderby
$search
$select
$skip
$top