У чому потреба Одати, коли у мене JSON?


23

Я намагаюся зрозуміти суть Одати і коли це мало б сенс. Зараз, як я працюю, я використовую контролер ASP.NET і MVC / WebApi, щоб серіалізувати / десеріалізувати об'єкти в JSON і змусити Javascript зробити щось з цим.

З того, що я можу сказати про користь OData, це можливість запиту безпосередньо з URL-адреси ... Але оскільки я пишу код клієнта та сервера, в цьому немає потреби.

Хтось коли-небудь розбирав результати запиту ODaya в JavaScript?

Можливо, OData більше стосується надання загальної кінцевої точки для ВСІХ клієнтів, щоб отримати детальну інформацію з запиту, який JSON не надає? Тож якщо я був провайдером даних, то, гадаю, саме для цього призначена Odata?

Допоможіть мені зрозуміти призначення та використання REST / JSON / ODATA.


2
Щоб полегшити ситуацію, вам також можуть бути цікаві пов'язані дані , платформа пов'язаних даних , SPARQL та словник каталогів даних . Усі вони є різними речами, які служать для різних цілей і які можна комбінувати з JSON , наприклад SPARQL 1.1 Результати запиту Формат JSON , і звичайно з REST .
Trylks

Відповіді:


42

JSON - це лише формат обміну даними, заснований на JavaScript.

REST - це стиль архітектури, тоді як OData - це специфічна реалізація REST, призначена для генерування та споживання даних, яка підтримує два формати, AtomPub та JSON.

Отже, різниця між JSON із звичайним REST та OData - це параметри в OData для маніпулювання даними, наприклад, якщо ми запитуємо дані за допомогою протоколу OData, ми можемо вказати наведені нижче параметри в URI,

  • $ orderby
  • $ верх
  • $ пропустити
  • $ фільтр
  • $ формат
  • $ select

Ми можемо робити проекцію, зв’язувати ресурси тощо, і всі ці варіанти доступні поза коробкою. А тепер уявіть, якби нам довелося надавати всі ці функції в нашій власній службі REST, тоді нам би довелося,

  • Виконайте їх усі
  • Створіть власну конвенцію / ключові слова для різних операцій

Це не тільки багато роботи, але й призводить до невідповідностей і створює криву навчання для наших споживачів даних.


5

JSON або JavaScript Object Notation - це лише формат або стандарт для даних. Це узгоджений формат для передачі чогось на зразок імені для входу АБО того, що повинно бути використане службою REST.

Дивіться цю частину: http://en.wikipedia.org/wiki/JSON

Хоча спочатку походить із мови скриптів JavaScript, JSON - це не залежний від мови формат даних, а код для розбору та генерування даних JSON легко доступний у великій кількості мов програмування.

Це не є частиною якоїсь конкретної мови програмування, тому різні системи можуть обходити дані досить легко, якщо вони знають, що використовують JSON.

Що стосується REST, то це просто стиль архітектури, який використовується для веб-сервісів.

Дивіться цю частину: http://en.wikipedia.org/wiki/Representational_state_transfer

Один із способів задуматися над цим - це якщо ви хочете написати веб-сервіс, з яким може спілкуватися багато різних комп'ютерів .. та обмінюватися інформацією. Ви можете написати веб-службу, щоб приймати дані через URL-адресу

 http://www.myservice.com/specialRESTService?name=punkouter

Зворотній відповідь може бути об'єктом JSON, який сигналізує про отримання ваших даних.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

Я ніколи не чув про OData, тому переглянув її:

OData побудований на протоколі AtomPub та JSON, де структура Atom - конверт, який містить дані, повернені з кожного запиту OData. Запит OData використовує модель REST для всіх запитів. Кожна команда REST - це POST, GET, PUT, PATCH або DELETE запит http (відображення в CRUD), де специфіка команди знаходиться в URL-адресі.

GET: Отримайте колекцію сутностей (у якості подаючого документа) або одного об'єкта (як вхідний документ).

POST: Створіть нову сутність із вхідного документа.

PUT: оновіть існуючий об'єкт документами про вхід.

PATCH: Оновіть існуючу сутність за допомогою часткового документа про вхід.

УВАГА: видаліть об’єкт.

Здається, що OData - це щось, що написано для розширення архітектури стилю ванільного REST .. Але схоже, що це може дати вам деякі додаткові речі, щоб ви йшли, замість того, щоб писати речі з нуля на C # або будь-якій мові, якою ви користуєтеся.

Якщо робота підштовхує вас до використання OData, ви все одно будете використовувати JSON..але в рамках / стандарті OData, написаних Microsoft та ін.

Хтось коли-небудь би розбирав результати запиту OData (sic) у javascript ??

Так, оскільки (це здається) він використовує JSON. Бути цілком природно використовувати JS.

Можливо, OData більше стосується надання загальної кінцевої точки для ВСІХ клієнтів, щоб отримати детальну інформацію з запиту, який JSON не надає? Тож якщо я був провайдером даних, то, гадаю, саме для цього призначений Odata?

Odata надає послугу REST .. але з деякими доданими стандартними послугами поверх простої "загальної" кінцевої точки служби REST .. клієнтам все одно, якщо ви використовуєте OData або прокручуєте власну послугу C #. оскільки відповіді були у узгодженому форматі (як JSON). Однак для вашої роботи, можливо, вони хочуть використовувати OData, оскільки це забезпечує багато функцій "поза коробкою".


Робота не важлива. Мені просто хотілося дізнатися, що таке епідемія Одати. JSON - це лише спосіб представлення даних .. і так це ODATA .. але .. я думаю, у мене є питання, що таке сценарій де використання REST та повернення JSON недостатньо .. а використання ODATA було б перевагою?
пунктур

ні ні, OData - це архітектура служби RESTful ..., яка використовує JSON для представлення даних. Ви нічого не отримаєте, використовуючи бібліотеки / стандарти OData .. нічого, що технічно не вдалося написати самостійно .. але використання OData може заощадити ваш час, якщо ви будуєте з ним речі .. На відміну від написання речей самостійно
Ерік

json? Але мені здається, що OData повертає XML ?? Або це обоє? я збентежений.
пунктур


На вашому посиланні "OData підтримує два формати для представлення ресурсів (Колекції, Записи, Посилання та ін.), Що відкривається: формат Atom на основі XML та формат JSON."
Ерік

2

Що стосується питання "чому", у книзі RESTful Web API є дійсно гарне визначення - по суті, OData реалізує модель колекції, де колекція - це ресурс, що забезпечує список ресурсів за посиланнями.


2

OData - це специфічна реалізація послуги RESTful зі стандартом для інтерфейсу. Перевага полягає в тому, що ви відкриваєте API свого продукту і заявляєте, що він відповідає стандарту OData, оскільки користувачі, які вже знайомі з OData, можуть його легко використовувати, не витрачаючи багато часу на читання документації API.

Недолік: Хоча OData чудово розкриває базову базу даних, специфікація не включає підтримку транзакцій і не може бути використана в додатках, де ми можемо мати послугу RESTful як інтерфейс БД, так і інтерфейс транзакцій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.