Чем oData отличается от службы REST?

15

Я пытаюсь написать API веб-сервиса и думаю о создании сервиса REST. Что означает OData в этом контексте? Можете ли вы объяснить разницу между OData и REST?

gyurisc
источник
см. odata.org
NoChance

Ответы:

11

REST - это архитектура для отправки сообщений от клиента к серверу с использованием HTTP. OData - это стандарт, отстаиваемый Microsoft и использующий архитектуру REST для отправки определенных типов сообщений по HTTP. OData говорит о том, как выглядят сообщения (содержимое). REST - это архитектура того, как эти сообщения отправляются туда и обратно.

RationalGeek
источник
5

Я согласен с @jkohlhepp и @Tom Squires, хотя добавлю пару деталей.

OData - это открытый стандарт (отстаиваемый Microsoft, но принятый за пределы Microsoft и доступный для многих платформ, включая iOS и Android).

Полезные данные OData основаны на формате Atom (чтение) и AtomPub (обновление). (Помимо этого, Atom также является основой для популярного формата RSS-канала.) Atom является расширяемым, и OData воспользовалась этим для создания известных расширений. Например, для службы OData существуют соглашения URI со многими возможностями, такими как фильтрация (фильтрация по дате или имени клиента) и сортировка и так далее. Использование этих специальных соглашений стандартным (определяемым OData) способом делает OData мощными, поскольку они действуют аналогично, и мы можем создавать инструменты для работы с ними и тому подобное.

Доступны некоторые хорошо известные источники OData, такие как Netflix (там есть все данные о фильмах - с ними интересно играть!).

Читайте все о OData на odata.org .

Удачи! -Билл

codingoutloud
источник
4

REST - это архитектурный стиль построения веб-сервисов. Это просто модель, которая говорит, что вы можете использовать HTTP и его глаголы (POST / PUT / GET и т. Д.) Для выполнения CRUD на ресурсах, предоставляемых вашими Сервисами. Но в REST отсутствуют какие-либо подробности о том, как должны выглядеть URL-адреса, как должны выглядеть форматы запросов / ответов, как запрашивать информацию или на базовом уровне, какие операции и ресурсы служба поддерживает в первую очередь!

В мире веб-сервисов на основе XML у нас есть SOAP, WSDL, WS- *, которые определяют стандарты, обеспечивающие взаимодействие между различными сервисами и их клиентами.

OData пытается сделать это для веб-служб на основе REST.

Он определяет $ metadata в формате CSDL, чтобы объяснить, какие (сущности / сложные) типы поддерживает ваш сервис и их свойства, их типы данных, как связаны ваши типы, и если ваш сервис также поддерживает некоторые специальные операции, выходящие за рамки традиционного CRUD.

OData стандартизирует форматы URL для ваших ресурсов, а именно: / Entity, / Entity ('id') или / Entity (key1 = value1, key2 = value2) ... и так далее ..

OData стандартизирует форматы запросов / ответов в JSON и AtomXml о том, как структурированы данные и их метаданные.

OData также задает очень богатый язык запросов, позволяющий потребителям запрашивать ваши службы для получения точной информации, которую они ищут - с помощью $ filter, $ orderby, $ skip, $ top, $ expand.

OData помогает вам описать всю вашу модель данных - сущности и их отношения, а также поддерживает все виды операций, таких как CREATE, UPDATE, DELETE, GET, MERGE и даже CUSTOM OPERATIONS для этих сущностей и / или отношений.

OData v4 теперь является стандартом OASIS, который имеет множество улучшений по сравнению с более ранними версиями. Экосистема для OData медленно растет.

Анил Г
источник
2

OData - это стандартное использование REST.

Том Сквайрс
источник