Краткое описание стандарта OData для минимальной реализации только для чтения
Спецификация OData длинная. Даже документ " OData Core" довольно длинный.
Итак, как насчет краткого изложения того, что издатель OData только для чтения должен реализовать как минимум?
1 ответ
Решение
Я начну. Служба 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 (например, для коллекции), он должен соответствовать некоторым соглашениям OData: http://www.odata.org/documentation/odata-v3-documentation/atom-format/ Например:
- Типы используются "
edm:String
" так далее. link
элементы используются щедроcontent
элементы либо содержат встроенный контент (например, текстовые данные), либо ссылаются на него (например, изображения, двоичные файлы) с помощьюsrc=
приписывать.
Когда возвращается фид JSON, он аналогичным образом следует определенным правилам:
URL-адреса рекомендуется придерживаться этой схемы: