Разница между OData и REST веб-сервисами

196

Просматривая некоторые веб-сервисы, я наткнулся на эту «новую» технологию, которую Microsoft называет OData . Прочитав их описание в FAQ о том, что такое OData, я с трудом отличаю OData от веб-сервисов REST-ful. Может ли кто-нибудь помочь мне понять различия?

Скотт
источник
2
Один - производитель, другой - активатор для потребителей.
Канкан

Ответы:

98

ОБНОВЛЕНИЕ Предупреждение, этот ответ чрезвычайно устарел, поскольку теперь доступна OData V4.


Я написал пост на эту тему некоторое время назад здесь .

Как сказал Франчи, OData основана на Atom Pub. Тем не менее, они наложили некоторые функции сверху и, к сожалению, проигнорировали некоторые ограничения REST в этом процессе.

Возможность запроса службы OData требует от вас создания URI на основе информации, которая недоступна или связана с ответом. Это то, что люди REST называют внеполосной информацией и вводят скрытую связь между клиентом и сервером.

Другая взаимосвязь, которая вводится, заключается в использовании метаданных EDMX для определения свойств, содержащихся в содержимом записи. Эти метаданные могут быть обнаружены в фиксированной конечной точке, называемой $ metadata. Опять же, клиент должен знать это заранее, это не может быть обнаружено.

К сожалению, Microsoft не сочла целесообразным создавать типы носителей для описания этих ключевых фрагментов данных, поэтому любой клиент OData должен сделать кучу предположений о службе, с которой он общается, и о данных, которые он получает.

Даррел Миллер
источник
1
@felickz Извините за это. У меня были проблемы с DNS. Это должно работать сейчас. Или будет, когда ваш DNS-кэш истекает.
Даррел Миллер
6
На самом деле это является устаревшим. В V3 OData добавлен «JSON Light», который решает обе эти проблемы (которые на самом деле являются только одной), то есть $ metadata - это то, как вы знаете, как создавать запросы, поэтому все, что не хватало, - это ссылка на $ metadata в представлениях ресурсов. Это было добавлено, так что обе проблемы исчезают сразу.
Алекс Джеймс
10
@DarrelMiller Вы упомянули, что ваш ответ устарел. Хотите добавить обновление с вашим мнением по теме? Мне все равно было бы интересно узнать разницу между OData 4 и REST. Большое спасибо
Куррен
2
@Kurren Это в моем списке дел, но, к сожалению, это длинный список.
Даррел Миллер
2
@DarrelMiller Надеюсь, вы найдете время, чтобы обновить пост в скором времени, чтобы он обновлялся с OData V4.
LCJ
64

Протокол OData построен поверх протокола AtomPub. Протокол AtomPub является одним из лучших примеров разработки REST API. Таким образом, в некотором смысле вы правы - OData - это просто еще один REST API, а каждая реализация OData - это веб-сервис с поддержкой REST.

Разница в том, что OData - это конкретный протокол; REST - это стиль архитектуры и шаблон дизайна.

Франси Пенов
источник
Я могу ошибаться в этом (только начал изучать odata), но, начиная с версии 3 [protocol] [ odata.org/documentation], похоже, также указан формат JSON, который вы можете использовать альтернативно. Можете ли вы пролить свет на это?
Йоханнес Рудольф
1
@JohannesRudolph, честно говоря, я понятия не имею. Я не смотрел OData в последние два года. Но вполне вероятно, что Microsoft добавила бы поддержку JSON. Обратите внимание, что это никоим образом не меняет ответы здесь. JSON против XML - это просто вопрос представления ресурсов REST.
Франци Пенов
1
Вы можете указать в запросе, какой формат вы хотели бы иметь. XML и JSON должны поддерживаться большинством реализаций, например, путем установки заголовка Accept для application / json (начиная с OData версии 2)
i000174
32

REST - это общая методика проектирования, используемая для описания того, как можно получить доступ к веб-сервису. Используя REST, вы можете делать http запросы для получения данных. Если вы попробуете это в своем браузере, это будет похоже на посещение веб-сайта, за исключением того, что вместо возврата веб-страницы вы получите XML. Некоторые сервисы также возвращают данные в формате JSON, который легче использовать с Javascript.

OData - это особая технология, которая предоставляет данные через REST.

Если вы хотите подвести итог очень быстро, подумайте об этом как:

  • REST - дизайн шаблона
  • OData - технология поддержки
Раш Фрисби
источник
20

В 2012 году OData прошла стандартизацию, поэтому я просто добавлю обновление здесь ..

Сначала определения:

REST - это архитектура отправки сообщений по HTTP.

OData V4 - это конкретная реализация REST, действительно определяющая содержимое сообщений в разных форматах (в настоящее время я думаю, что это AtomPub и JSON). ODataV4 следует остальным принципам.

Например, пользователи asp.net в основном будут использовать контроллер WebApi для сериализации / десериализации объектов в JSON, а javascript с этим что-то сделает. Смысл Odata в том, что он может делать запросы напрямую с URL-адреса с готовыми опциями.

tatigo
источник
10

Из документации OData :

Протокол OData - это протокол прикладного уровня для взаимодействия с данными через веб-сервисы RESTful.

...

Протокол OData отличается от других подходов на основе веб-служб REST тем, что он обеспечивает единый способ описания как данных, так и модели данных.

mcanti
источник
4

OData (Open Data Protocol) - это стандарт OASIS, который определяет лучшие практики для построения и использования RESTful API. OData помогает вам сосредоточиться на вашей бизнес-логике при создании API-интерфейсов RESTful, не беспокоясь о подходах к определению заголовков запросов и ответов, кодов состояния, HTTP-методов, соглашений URL, типов мультимедиа, форматов полезной нагрузки, параметров запросов и т. Д. OData также поможет вам отслеживание изменений, определение функций / действий для процедур многократного использования и отправка асинхронных / пакетных запросов и т. д. Кроме того, OData предоставляет возможность расширения для удовлетворения любых пользовательских потребностей ваших RESTful API.

OData RESTful API легко использовать. Метаданные OData, машиночитаемое описание модели данных API, позволяют создавать мощные универсальные клиентские прокси и инструменты. Некоторые из них могут помочь вам взаимодействовать с OData, даже не зная ничего о протоколе. Следующие 6 шагов демонстрируют 6 интересных сценариев потребления OData для разных программных платформ. Но если вы не являетесь разработчиком и хотите просто поиграть с OData, XOData - это лучшее начало для вас.

для более подробной информации на http://www.odata.org/

RajeshVerma
источник
4

ODATA - это особый тип REST, где мы можем запрашивать данные равномерно по URL.

Мин Нгуен
источник
2

REST означает RE презентационного S татэ Т ransfer , которая является ресурс на основе архитектурного стиля. На основе ресурсов означает, что данные и функциональные возможности рассматриваются как ресурсы.

OData - это веб-протокол, который определяет набор лучших практик для создания и использования веб-сервисов RESTful. OData - это способ создания веб-сервисов RESTful, таким образом, реализация REST.

Ishara
источник