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