stringtranslate.com

Открытый протокол данных

В вычислениях 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).

Технический комитет OASIS OData

«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 для обозначения операций с ресурсами.

Запрос

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 , "Имя" : "Молоко" , "Описание" : "Обезжиренное молоко" , "Дата выпуска" : "1995-10-01T00:00:00Z" , "DiscontinuedDate" : null , "Рейтинг" : 3 , «Цена» : 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/$ метаданные#Продукты" 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" > Продукты </title>  <обновлено> 19.05.2015T03:38:50Z < /обновлено> <link rel= "self" title= "Продукты" href= "Продукты" />    <запись> <id> http://services.odata.org/V4/OData/OData.svc/Products(0) </id> <category term = "#ODataDemo.Product" схема = "http://docs.oasis-open.org/odata/ns/scheme" />   <link rel= "edit" title= "Продукт" href= "Продукты(0)" />    <link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type= "application/xml" title= "Категории" href= "Продукты(0)/Категории/$ref" />     <link rel= "http://docs.oasis-open.org/odata/ns/related/Categories" type= "application/atom+xml;type=feed" title= "Категории" href= "Продукты(0) /Категории" />     <link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type= "application/xml" title= "Поставщик" 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) /Поставщик" />     <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) /Детали продукта" />     <название/> <обновлено> 19.05.2015T03:38:50Z < /обновлено> <автор> <имя/> </автор> < тип контента = "приложение/xml" >  <м:свойства> <d:ID m:type= "Int32" > 0 </d:ID>  <d:Name> Хлеб </d:Name> <d:Description> Цельнозерновой  хлеб </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> </содержание> </entry> <запись> <id> http://services.odata.org/V4/OData/OData.svc/Products(1) </id> <category term = "#ODataDemo.Product" схема = "http://docs.oasis-open.org/odata/ns/scheme" />   <link rel= "edit" title= "Продукт" href= "Продукты(1)" />    <link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type= "application/xml" title= "Категории" href= "Продукты(1)/Категории/$ref" />     <link rel= "http://docs.oasis-open.org/odata/ns/related/Categories" type= "application/atom+xml;type=feed" title= "Категории" href= "Продукты(1) /Категории" />     <link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type= "application/xml" title= "Поставщик" href= "Products(1)/Supplier/$ref" />     <link rel= "http://docs.oasis-open.org/odata/ns/related/Supplier" type= "application/atom+xml;type=entry" title= "Поставщик" href= "Products(1) /Поставщик" />     <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) /Детали продукта" />     <название/> <обновлено> 19.05.2015T03:38:50Z < /обновлено> <автор> <имя/> </автор> < тип контента = "приложение/xml" >  <м:свойства> <d:ID m:type= "Int32" > 1 </d:ID>  <d:Name> Молоко </d:Name> <d:Description> Молоко с низким  содержанием жирности </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> </содержание> </entry> ...</фид>

Пример документа метаданных OData

<edmx:Edmx Version= "4.0" xmlns:edmx= "http://docs.oasis-open.org/odata/ns/edmx" >   <edmx:DataServices> < Пространство имен схемы = "ODataDemo" xmlns = "http://docs.oasis-open.org/odata/ns/edm" >   <Имя EntityType = "Продукт" >  <Ключ> <PropertyRef Name= "ID" />  </Ключ> < Имя свойства = "ID" Тип = "Edm.Int32" Nullable = "false" />    < Имя свойства= "Имя" Тип= "Edm.String" />   < Имя свойства = «Описание» Тип = «Edm.String» />   < Имя свойства = «Дата выпуска» Тип = «Edm.DateTimeOffset» Nullable = «false» />    < Имя свойства = «Дата прекращения» Тип = «Edm.DateTimeOffset» />   < Имя свойства = «Рейтинг» Тип = «Edm.Int16» Nullable = «false» />    < Имя свойства = «Цена» Тип = «Edm.Double» Nullable = «false» />    </EntityType> < Имя КомплексногоТипа = "Адрес" >  < Имя свойства= "Улица" Тип= "Edm.String" />   < Имя свойства = "Город" Тип = "Edm.String" />   < Имя свойства = «Состояние» Тип = «Edm.String» />   < Имя свойства = "Почтовый индекс" Тип = "Edm.String" />   < Имя свойства = "Страна" Тип = "Edm.String" />   </КомплексныйТип>  < Имя EntityContainer = "ДемоСервис" >  <EntitySet Name= "Products" EntityType= "ODataDemo.Product" ></EntitySet>   </EntityContainer> </Схема> </edmx:DataServices></edmx:Edmx>

Экосистема

Экосистема OData состоит из библиотек клиент/сервер, реализующих протокол, и приложений, основанных на этом протоколе.

Библиотеки

Существует ряд библиотек OData, доступных для доступа и создания API OData:

.СЕТЬ

Джава

JavaScript

PHP

Питон

Рубин

Другие

Другие реализованные языки включают: [30]

Приложения

Приложения включают: [35]

Инструменты

Смотрите также

Рекомендации

  1. Фласко, Майк (18 июля 2007 г.). "Добро пожаловать!". Блоги MSDN . Команда ОДата. Архивировано из оригинала 5 мая 2014 года.
  2. ^ «Технический комитет OASIS по протоколу открытых данных (OData)» . Проверено 5 августа 2013 г.
  3. ^ «OASIS утверждает стандарты OData 4.0 для открытой программируемой сети» . oasis-open.org . 17 марта 2014 г.
  4. ^ «OASIS представила формат OData v4 и OData JSON v4 в ISO/IEC JTC 1 для утверждения в качестве международного стандарта» . MS Открытые технологии . Архивировано из оригинала 20 мая 2015 г. Проверено 18 мая 2015 г.
  5. ^ «OData опубликован как стандарт ISO · OData — лучший способ REST» . www.odata.org . Проверено 11 мая 2021 г.
  6. ^ «ISO/IEC 20802-1:2016». ИСО . Проверено 11 мая 2021 г.
  7. ^ «ISO/IEC 20802-2:2016». ИСО . Проверено 11 мая 2021 г.
  8. ^ «Протокол открытых данных OASIS (OData) TC | OASIS» . www.oasis-open.org . Проверено 24 сентября 2019 г.
  9. ^ Библиотеки Microsoft OData .NET.
  10. ^ Simple.OData.Client
  11. ^ Апач Олинго
  12. ^ Jello-Framework
  13. ^ odata-клиент
  14. ^ Апач Олинго
  15. ^ «Библиотеки · OData — лучший способ ОТДЫХА» . www.odata.org . Проверено 19 февраля 2019 г.
  16. ^ "данные.js". Архив CodePlex .
  17. ^ ДжейДата
  18. ^ JayData для узла
  19. ^ Бриз
  20. ^ OData4 и Invantive Bridge Online
  21. ^ odata-fluent-запрос
  22. ^ узел-одата
  23. ^ odataphp
  24. ^ POData
  25. ^ PyOData
  26. ^ Пислет
  27. ^ библиотека Ruby_odata
  28. ^ Бесплатная библиотека OData V4.0 для Ruby
  29. ^ Сафрано
  30. ^ «Библиотеки». odata.org .
  31. ^ Библиотека Ajax ASP.NET
  32. ^ odacpp_client
  33. ^ Наветренные студии
  34. ^ OData-BB10
  35. ^ «Экосистема». odata.org .
  36. ^ Конвейер гибридных данных Progress DataDirect
  37. ^ «Шлюз SAP NetWeaver» . Проверено 22 ноября 2012 г.
  38. ^ Служба данных REST IBM DeveloperWorks eXtreme Scale (OData)
  39. ^ «Добро пожаловать в API Office 365» . docs.microsoft.com . 28 августа 2018 года . Проверено 24 сентября 2019 г.
  40. ^ «Настройка Salesforce Connect для доступа к внешним данным с помощью адаптера OData 2.0 или 4.0» .
  41. ^ Скайвиа Коннект
  42. ^ "OData - Таблица" . help.tableau.com . Проверено 24 сентября 2019 г.
  43. ^ "OData и Spotfire". Блог TIBCO . Проверено 30 марта 2016 г.
  44. ^ Мулсофт
  45. ^ "Обмен Anypoint" . www.mulesoft.com . Проверено 24 сентября 2019 г.
  46. ^ Факторы успеха
  47. ^ Dayforce Ceridian HCM
  48. ^ «Программное обеспечение для отчетности по персоналу - Dayforce | Ceridian» . www.ceridian.com . Проверено 24 сентября 2019 г.
  49. ^ «Что нужно знать об API Redfish» . Точный . 01.12.2017 . Проверено 31 августа 2019 г.
  50. ^ "Мастер базы данных нуклонов" . Проверено 16 ноября 2017 г.

Внешние ссылки

Стандарты OData OASIS

Спецификации комитета

Примечания комитета