-
Notifications
You must be signed in to change notification settings - Fork 0
MS_OData
nishi_74322014 edited this page Aug 3, 2026
·
1 revision
-
TOP > インフラストラクチャ > 通信技術 > HTTP > WebAPI
- SOAP
- REST
- Swagger (OpenAPI)
- gRPC
- GraphQL
- OData
-
更新操作をサポートする OData プロトコルは、
データソースとの接続と操作を簡素にする仕組みを提供しようとしている。 -
こう書くと、
- GraphQL に似ていることが解る。
- 海外記事には「GraphQL vs(or) OData」がある。
- OData は MS しか使ってないっぽく、GraphQL の方が人気。
移行メモ(補足): 「XML 版の GraphQL」という説明は位置付けとしては解りやすいが、 正確には次のとおりである。
OData の特徴は、URL に付けるクエリ オプションで 射影・絞り込み・並べ替え・ページングを表現できる点である。
| オプション | 用途 | 例 |
|---|---|---|
$select |
返すプロパティを絞る | ?$select=Name,Price |
$filter |
条件で絞り込む | ?$filter=Price gt 100 |
$orderby |
並べ替え | ?$orderby=Price desc |
$top / $skip
|
ページング | ?$top=20&$skip=40 |
$expand |
関連エンティティを展開 | ?$expand=Category |
$count |
件数を返す | ?$count=true |
- メタデータは
$metadataエンドポイントから CSDL(XML)として取得でき、
Swagger (OpenAPI) における定義書に相当する役割を果たす。
補足: GraphQL と同じく、 クライアントに任意のクエリを許すことの危険性は OData にもある。
$expandの多段や$filterの複雑な条件は、 そのまま重い SQL に変換されうる。 ASP.NET Core OData では[EnableQuery(MaxExpansionDepth = ..., MaxTop = ...)]で 上限を設定できるので、公開 API では必ず制限すること。なお、URL に条件が乗るということは キャッシュ・コントロールのHTTPヘッダ による HTTP キャッシュが効くということでもあり、 この点は GraphQL に対する OData の利点である。
補足(最新化): 汎用の Web API 技術としては REST / Swagger (OpenAPI) や GraphQL に押されているが、 Microsoft 製品の中では現役である。
- Microsoft Graph(Graph API)は OData ベース
- Dynamics 365 の Web API は OData v4
- SharePoint / Business Central の API
- ASP.NET Core では
Microsoft.AspNetCore.ODataで実装できる「MS 系の製品と連携する」用途では避けて通れない。
- WebAPI
- GraphQL
- Graph API
- OData 公式サイト
- ASP.NET Core OData - Microsoft Learn
- 【第5回jduc】【勉強会】dynamics 365 web apiとの接し方 - SlideShare
Tags: IT国際標準, プログラミング, 通信技術, .NET開発, ASP.NET
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。