最小只读实现的 OData 标准摘要
解决方案
我开始吧。OData 服务提供一个 HTTP 端点:
- 一定要明白“
Accept
“ 标头 - 必须支持 Content-Type 标头,并且必须支持 ATOM 格式(可选 JSON)
- 可以将服务文档(集合列表)返回给
GET /
(10.1.1)- 如果是ATOM(AtomPub?)格式,层次结构是
service/workspace/collection/title
- 如果是ATOM(AtomPub?)格式,层次结构是
- 必须将集合的描述返回给请求,例如
GET /Customers
(10.2)- 如果是 ATOM,层次结构是
feed/entry/content
- 如果是 ATOM,层次结构是
- 必须将各个实体的描述返回给请求,例如
GET /Customers(3)
(10.2.1) - 可以针对以下请求返回各个实体的各个属性
GET /Customers(3)/Name
(10.2.2) - 必须提供一个 CSDL 包含在 EDMX 文档中的架构描述 (10.1.2)
- 这应该可以在
/$metadata
- 这应该可以在
- 可以支持任何这些查询 (10.2.3)
- 过滤器(限制返回的行数):
Products?$filter=Price lt 10.00
- 选择(限制返回的字段):
Products?$select=Rating,ReleaseDate
- 订购方式:
Products?$orderby=ReleaseDate asc, Rating desc
- 顶,跳过:
Products?$top=5&$skip=2
- InlineCount(包括实体计数):
Products?$inlinecount=allpages
- 过滤器(限制返回的行数):
- 必须(?)提供实体的关系列表(10.2.4):
Products(0)/$links/Orders
- 必须提供实体计数 (10.2.5):
Products/$count
- 可以支持其他格式
$format
说明符 (10.2.3.7)
当返回 ATOM feed(例如集合)时,它需要符合一些 OData 约定: http://www.odata.org/documentation/odata-v3-documentation/atom-format/ 例如:
- 使用的类型是“
edm:String
“ ETC。 link
元素被大量使用content
元素要么包含内联内容(例如文本数据),要么链接到它(例如图像、二进制文件)src=
属性。
当返回 JSON feed 时,它同样遵循某些规则:
鼓励 URL 遵循此方案:
不隶属于 StackOverflow