Открытый протокол данных
В вычислениях , Open Data Protocol ( OData ) — это открытый протокол создавать и использовать запрашиваемые и совместимые веб-сервисов API-интерфейсы который позволяет стандартным способом . Microsoft запустила OData в 2007 году. [1] Версии 1.0, 2.0 и 3.0 выпускаются в соответствии с обещанием открытой спецификации Microsoft . Версия 4.0 была стандартизирована в OASIS . [2] с выпуском в марте 2014 года. [3] В апреле 2015 года OASIS представил OData v4 и OData JSON Format v4 в ISO/IEC JTC 1 для утверждения в качестве международного стандарта . [4] В декабре 2016 года ISO/IEC опубликовал OData 4.0 Core как ISO/IEC 20802-1:2016. [5] [6] и формат OData JSON как ISO/IEC 20802-2:2016. [7]
Протокол позволяет создавать и использовать веб-API на основе HTTP , которые позволяют веб-клиентам публиковать и редактировать ресурсы, идентифицированные с помощью URL-адресов и определенные в модели данных , с помощью простых HTTP-сообщений. OData имеет некоторое сходство с JDBC и ODBC ; Как и ODBC, OData не ограничивается реляционными базами данных .
Стандартизация [ править ]
После первоначальной разработки Microsoft OData стал стандартизированным протоколом Технического комитета OASIS OData (TC).
Технический комитет OData OASIS
«OASIS OData TC помогает упростить запросы и обмен данными между разрозненными приложениями и множеством заинтересованных сторон для повторного использования на предприятии, в облаке и на мобильных устройствах. Протокол OData на основе REST основан на HTTP , AtomPub и JSON с использованием URI для адресации и доступа к ресурсам каналов данных. Он обеспечивает доступ к информации из различных источников, включая (но не ограничиваясь ими) реляционные базы данных, файловые системы, системы управления контентом и традиционные веб-сайты. OData обеспечивает способ разделения данных. разрозненности и увеличить общую ценность данных путем создания экосистемы, в которой потребители данных могут взаимодействовать с производителями данных гораздо более эффективным способом, чем это возможно в настоящее время, что позволяет большему количеству приложений понимать более широкий набор данных как для каждого производителя, так и для потребителя. данных, которые участвуют в этой экосистеме, увеличивает ее общую ценность». [8]
В число участников TC входят CA Technologies , Citrix Systems , IBM , Microsoft , Progress Software , Red Hat , SAP SE и SDL .
Архитектура [ править ]
OData — это протокол для создания и использования веб-API. Таким образом, OData основывается на HTTP, AtomPub и JSON, используя URI для адресации и доступа к ресурсам канала данных.
Идентификация ресурса [ править ]
OData использует URI для идентификации ресурсов. Для каждой службы OData, корень которой сокращен как http://host/service/ следующие фиксированные , можно найти ресурсы:
Сервисный документ [ править ]
В служебном документе перечислены наборы сущностей, функции и одиночные элементы, которые можно получить. Клиенты могут использовать служебный документ для навигации по модели с помощью гипермедиа.
Сервисный документ доступен по адресу http://host/service/.
Документ метаданных [ править ]
Документ метаданных описывает типы, наборы, функции и действия, понятные службе OData. Клиенты могут использовать документ метаданных, чтобы понять, как запрашивать объекты в службе и взаимодействовать с ними.
Документ метаданных доступен по адресу http://host/service/$metadata .
Динамические ресурсы [ править ]
URI для динамических ресурсов могут быть вычислены из гипермедийной информации в служебном документе и документе метаданных.
Операция ресурса [ править ]
OData использует команды HTTP для обозначения операций с ресурсами.
- ПОЛУЧИТЬ: Получить ресурс (набор сущностей, один объект, структурное свойство, свойство навигации, поток и т. д.).
- POST: Создайте новый ресурс.
- PUT: обновить существующий ресурс, заменив его полным экземпляром.
- ИСПРАВЛЕНИЕ: Обновите существующий ресурс, заменив часть его свойств частичным экземпляром.
- УДАЛЕНИЕ: удалить ресурс.
Запрос [ править ]
URL-адреса, запрошенные у конечной точки OData, могут включать параметры запроса. Протокол OData определяет различные «параметры системного запроса», которые должны принимать конечные точки. Их можно использовать для фильтрации, упорядочивания, сопоставления или разбиения на страницы данных.
Параметры запроса можно добавить к URL-адресу после ?
символ и разделены &
персонажи; каждый вариант состоит из $
-sign имя префикса и его значение, разделенные знаком =
знак, например: OData/Products?$top=2&$orderby=Name
. Определен ряд логических операторов и функций для использования при фильтрации данных, например: OData/Products?$filter=Price lt 10.00 and startswith(Name,'M')
запрашивает товары с ценой меньше 10 и названием, начинающимся на букву «М».
Представление ресурса [ править ]
OData использует разные форматы для представления данных и модели данных. В протоколе OData версии 4.0 формат JSON является стандартом представления данных, а формат Atom все еще находится на стадии спецификации комитета. Для представления модели данных используется язык определения общей схемы (CSDL), который определяет XML-представление модели данных объекта, предоставляемой службами OData.
Пример полезных данных OData JSON [ править ]
Коллекция продуктов:
{
"@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata#Products",
"value": [
{
"ID": 0,
"Name": "Meat",
"Description": "Red Meat",
"ReleaseDate": "1992-01-01T00:00:00Z",
"DiscontinuedDate": null,
"Rating": 14,
"Price": 2.5
},
{
"ID": 1,
"Name": "Milk",
"Description": "Low fat milk",
"ReleaseDate": "1995-10-01T00:00:00Z",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 3.5
},
...
]
}
Пример полезной нагрузки данных OData Atom [ править ]
Коллекция продуктов:
<feed xml:base="http://services.odata.org/V4/OData/OData.svc/" m:context="http://services.odata.org/V4/OData/OData.svc/$metadata#Products" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://docs.oasis-open.org/odata/ns/data" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
<id>http://services.odata.org/v4/odata/odata.svc/Products</id>
<title type="text">Products</title>
<updated>2015-05-19T03:38:50Z</updated>
<link rel="self" title="Products" href="Products"/>
<entry>
<id>http://services.odata.org/V4/OData/OData.svc/Products(0)</id>
<category term="#ODataDemo.Product" scheme="http://docs.oasis-open.org/odata/ns/scheme"/>
<link rel="edit" title="Product" href="Products(0)"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(0)/Categories/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(0)/Categories"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(0)/Supplier/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(0)/Supplier"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(0)/ProductDetail/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(0)/ProductDetail"/>
<title/>
<updated>2015-05-19T03:38:50Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:ID m:type="Int32">0</d:ID>
<d:Name>Bread</d:Name>
<d:Description>Whole grain bread</d:Description>
<d:ReleaseDate m:type="DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate>
<d:DiscontinuedDate m:null="true"/>
<d:Rating m:type="Int16">4</d:Rating>
<d:Price m:type="Double">2.5</d:Price>
</m:properties>
</content>
</entry>
<entry>
<id>http://services.odata.org/V4/OData/OData.svc/Products(1)</id>
<category term="#ODataDemo.Product" scheme="http://docs.oasis-open.org/odata/ns/scheme"/>
<link rel="edit" title="Product" href="Products(1)"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(1)/Categories/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(1)/Categories"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(1)/Supplier/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(1)/Supplier"/>
<link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(1)/ProductDetail/$ref"/>
<link rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(1)/ProductDetail"/>
<title/>
<updated>2015-05-19T03:38:50Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:ID m:type="Int32">1</d:ID>
<d:Name>Milk</d:Name>
<d:Description>Low fat milk</d:Description>
<d:ReleaseDate m:type="DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate>
<d:DiscontinuedDate m:null="true"/>
<d:Rating m:type="Int16">3</d:Rating>
<d:Price m:type="Double">3.5</d:Price>
</m:properties>
</content>
</entry>
...
</feed>
Образец документа метаданных OData [ править ]
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
<edmx:DataServices>
<Schema Namespace="ODataDemo" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityType Name="Product">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Int32" Nullable="false"/>
<Property Name="Name" Type="Edm.String"/>
<Property Name="Description" Type="Edm.String"/>
<Property Name="ReleaseDate" Type="Edm.DateTimeOffset" Nullable="false"/>
<Property Name="DiscontinuedDate" Type="Edm.DateTimeOffset"/>
<Property Name="Rating" Type="Edm.Int16" Nullable="false"/>
<Property Name="Price" Type="Edm.Double" Nullable="false"/>
</EntityType>
<ComplexType Name="Address">
<Property Name="Street" Type="Edm.String"/>
<Property Name="City" Type="Edm.String"/>
<Property Name="State" Type="Edm.String"/>
<Property Name="ZipCode" Type="Edm.String"/>
<Property Name="Country" Type="Edm.String"/>
</ComplexType>
<EntityContainer Name="DemoService">
<EntitySet Name="Products" EntityType="ODataDemo.Product"></EntitySet>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
Экосистема [ править ]
в этом разделе Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( Октябрь 2015 г. ) |
Экосистема OData состоит из библиотек клиент/сервер, реализующих протокол, и приложений, основанных на этом протоколе.
Библиотеки [ править ]
Существует ряд библиотек OData, доступных для доступа и создания API OData:
.NET[edit.NET
Ява [ править ]
- Сервер и клиент: Apache Olingo. [11]
- Серверная часть: Jello-Framework. [12]
- Клиент: odata-клиент [13]
JavaScript [ править ]
- Клиент: Апач Олинго [14] (представлено OASIS [15] )
- Клиент: data.js [16]
- Клиент: JayData [17] для более высокого уровня абстракции (синтаксис типа LINQ, поддержка географических функций OData, IndexedDB, WebSQL, интеграция с DevExtreme, Kendo UI, Angular.js, Knockout.js и Sencha).
- Клиент: библиотека OpenUI5, поддерживаемая SAP.
- Клиент (Node.js): JayData для узла [18]
- Клиент: Бриз [19]
- Клиент: OData4 и Invantive Bridge Online [20]
- Клиент: odata-fluent-запрос: [21] синтаксический анализатор языка запросов OData JavaScript
- Сервер: узел-odata [22]
PHP [ править ]
Питон [ править ]
Руби [ править ]
- Клиент: библиотека Ruby_odata. [27]
- Клиент: Бесплатная библиотека OData V4.0 для Ruby [28]
- Сервер: Шафран [29]
Другие [ править ]
Другие реализованные языки включают: [30]
- AJAX: библиотека Ajax ASP.NET [31] для доступа к OData.
- С++: odacpp_client [32] представляет собой реализацию протокола OData только на стороне клиента.
- Наветренные студии [33] поддерживает OData в своих решениях для создания отчетов и документов.
- Инструмент отчетности List & Label имеет специализированного поставщика данных для OData.
- Blackberry (C++): OData-BB10 [34] Библиотека протокола открытых данных (OData) для приложений BlackBerry 10 (BB10) Cascades
Приложения [ править ]
Приложения включают в себя: [35]
- Гибридный конвейер данных Progress DataDirect [36] может предоставлять любое облако, большие данные или источники реляционных данных в качестве конечных точек OData
- Socrata OData предоставляет API .
- Microsoft Azure OData предоставляет API .
- Oracle Analytics Cloud может подключаться к API OData
- SAP NetWeaver Шлюз [37] обеспечивает доступ OData к SAP Business Suite и SAP Business Warehouse.
- Доступ к службе данных REST IBM WebSphere eXtreme Scale может получить любой HTTP-клиент, использующий OData. [38]
- Microsoft SharePoint 2010 и более поздних версий может предоставлять свои данные как конечную точку OData.
- Office 365 предоставляет API-интерфейсы OData V4.0. [39]
- Salesforce Connect использует API OData. [40]
- Скайвиа Коннект [41] предоставляет данные облака и базы данных через OData
- Tableau может подключаться к API OData. [42]
- TIBCO Spotfire может подключаться к API OData. [43]
- Мулсофт [44] помогает интегрироваться с API OData. [45]
- Факторы успеха [46] использует API OData
- Dayforce от Ceridian HCM [47] использует Odata [48]
- Redfish использует Odata [49]
Инструменты [ править ]
- Мастер базы данных нуклонов [50]
См. также [ править ]
- GData – конкурирующий протокол от Google
- Структура описания ресурсов (RDF) - аналогичная концепция W3C.
- GraphQL — популярный протокол родом из Facebook/Meta.
Ссылки [ править ]
- ^ Фласко, Майк (18 июля 2007 г.). "Добро пожаловать!" . Блоги MSDN . Команда ОДата. Архивировано из оригинала 5 мая 2014 года.
- ^ «Технический комитет OASIS по протоколу открытых данных (OData)» . Проверено 5 августа 2013 г.
- ^ «OASIS утверждает стандарты OData 4.0 для открытой программируемой сети» . oasis-open.org . 17 марта 2014 г.
- ^ «OASIS представил формат OData v4 и OData JSON v4 в ISO/IEC JTC 1 для утверждения в качестве международного стандарта» . MS Открытые технологии . Архивировано из оригинала 20 мая 2015 г. Проверено 18 мая 2015 г.
- ^ «OData опубликован как стандарт ISO · OData — лучший способ REST» . www.odata.org . Проверено 11 мая 2021 г.
- ^ «ИСО/МЭК 20802-1:2016» . ИСО . Проверено 11 мая 2021 г.
- ^ «ИСО/МЭК 20802-2:2016» . ИСО . Проверено 11 мая 2021 г.
- ^ «Протокол открытых данных OASIS (OData) TC | OASIS» . www.oasis-open.org . Проверено 24 сентября 2019 г.
- ^ Библиотеки Microsoft OData .NET.
- ^ Simple.OData.Client
- ^ Апач Олинго
- ^ Jello-Framework
- ^ odata-клиент
- ^ Апач Олинго
- ^ «Библиотеки · OData — лучший способ ОТДЫХА» . www.odata.org . Проверено 19 февраля 2019 г.
- ^ "данные.js" . Архив CodePlex .
- ^ ДжейДата
- ^ JayData для узла
- ^ Бриз
- ^ OData4 и Invantive Bridge Online
- ^ odata-fluent-запрос
- ^ узел-одата
- ^ odataphp
- ^ ДАННЫЕ
- ^ PyOData
- ^ Лудильщик
- ^ библиотека Ruby_odata
- ^ Бесплатная библиотека OData V4.0 для Ruby
- ^ Шафран
- ^ «Библиотеки» . odata.org .
- ^ Библиотека Ajax ASP.NET
- ^ odacpp_client
- ^ Наветренные студии
- ^ OData-BB10
- ^ «Экосистема» . odata.org .
- ^ Конвейер гибридных данных Progress DataDirect
- ^ «Шлюз SAP NetWeaver» . Проверено 22 ноября 2012 г.
- ^ Служба данных REST IBM DeveloperWorks eXtreme Scale (OData)
- ^ «Добро пожаловать в API Office 365» . docs.microsoft.com . 28 августа 2018 года . Проверено 24 сентября 2019 г.
- ^ «Настройка Salesforce Connect для доступа к внешним данным с помощью адаптера OData 2.0 или 4.0» .
- ^ Скайвиа Коннект
- ^ «OData — Таблица» . help.tableau.com . Проверено 24 сентября 2019 г.
- ^ «OData и Spotfire» . Блог TIBCO . Проверено 30 марта 2016 г.
- ^ Мулсофт
- ^ «Обмен Anypoint» . www.mulesoft.com . Проверено 24 сентября 2019 г.
- ^ Факторы успеха
- ^ Dayforce Ceridian HCM
- ^ «Программное обеспечение для отчетности по персоналу — Dayforce | Ceridian» . www.ceridian.com . Проверено 24 сентября 2019 г.
- ^ «Что нужно знать об API Redfish» . Точный . 01.12.2017 . Проверено 31 августа 2019 г.
- ^ «Мастер базы данных нуклонов» . Проверено 16 ноября 2017 г.
Внешние ссылки [ править ]
Стандарты OData OASIS [ править ]
- OData версии 4.0, часть 1: протокол
- OData версии 4.0, часть 2: Соглашения об URL-адресах
- OData версии 4.0, часть 3: Общий язык определения схемы (CSDL)
- Компоненты ABNF — правила построения OData ABNF версии 4.0 и тестовые примеры OData ABNF
- Компоненты словаря — словарь OData Core и словарь показателей OData
- XML-схемы — XML-схема OData EDMX и XML-схема OData EDM
- Формат OData JSON версии 4.0