OData标准摘要,以最少的只读实现

Ste*_*ett 1 standards json atompub odata atom-feed

OData的规格为长。甚至“ OData Core ”文档也很长。

那么,对于只读OData发布者至少需要实现的内容的简要总结呢?

Ste*_*ett 5

我开始 OData服务提供一个HTTP端点,该端点:

  • 必须了解Accept标题
  • 必须支持Content-Type标头,并且必须支持ATOM格式(可选JSON)
  • 可以将服务文件(托收清单)退还给GET /(10.1.1)
    • 如果是ATOM(AtomPub?)格式,则层次结构为 service/workspace/collection/title
  • 必须将集合的描述返回给请求GET /Customers(10.2)
    • 如果是ATOM,则层次结构为 feed/entry/content
  • 必须将单个实体的描述返回给GET /Customers(3)(10.2.1)之类的请求
  • 可以为GET /Customers(3)/Name(10.2.2)之类的请求返回单个实体的单个属性。
  • 必须提供包装在EDMX文档(10.1.2)中的CSDL模式描述
    • 这个应该可以在 /$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提要(例如用于集合)时,它需要符合某些OData约定:http : //www.odata.org/documentation/odata-v3-documentation/atom-format/ 例如:

  • 使用的类型为“ edm:String”等。
  • link 元素被大量使用
  • content元素要么包含内容内联(例如,文本数据),要么链接到具有src=属性的内容(例如,图像,二进制文件)。

返回JSON feed时,它类似地遵循某些规则:

鼓励URL遵循以下方案: