Подтвердить что ты не робот

Как использовать службу OData с помощью Html/Javascript?

В настоящее время наш проект использует Silverlight для использования сервиса Odata. Это сделало жизнь довольно простой, так как мы можем просто ссылаться на службу OData, предоставляя нам созданную служебную ссылку/сущности.

Однако существует некоторое обсуждение вопроса о том, следует ли переходить на Html (html5). Я хотел бы знать, чего ожидать, если мы сделаем это изменение. Конечно, мы будем использовать фреймворк вроде jQuery.

  • Моя основная проблема заключается в том, как использовать один и тот же сервис OData с помощью JavaScript/jQuery.
  • Как мы предположили десериализацию/сериализацию объектов, возвращаемых из этой службы OData?
  • Является ли наш контракт на данные жестко закодированным (если это так, для нас это действительно неприемлемо)?

Спасибо!

4b9b3361

Ответ 1

Источники OData могут возвращать данные как JSON, поэтому ваши веб-страницы могут XHR ваши данные и получать их как JSON, который де-сериализуется обратно в объект Javascript для вас отбирать и действовать или отображать.

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

НТН.

Ответ 2

Мы также выпустили довольно классную небольшую библиотеку под названием Data.js(http://datajs.codeplex.com/), которая значительно ускорит потребление OData из JavaScript. Здесь образец в CoffeeScript:

success = (data) -> $("#searchResultsTemplate").tmpl(data).appendTo("#resultsArea")
error = (err) -> $("#resultsArea").text(JSON.stringify(err.message))

do ->
  $("#search").click(->
    OData.defaultHttpClient.enableJsonpCallback = true
    OData.read("http://odata.netflix.com/v2/Catalog/Titles?$top=5", success, error))

И генерируемый JavaScript:

 success = function(data) {
    return $("#searchResultsTemplate").tmpl(data).appendTo("#resultsArea");
  };

  error = function(err) {
    return $("#resultsArea").text(JSON.stringify(err.message));
  };

  (function() {
    return $("#search").click(function() {
      OData.defaultHttpClient.enableJsonpCallback = true;
      return OData.read("http://odata.netflix.com/v2/Catalog/Titles?$top=5", success, error);
    });
  })();

До сих пор я успешно использовал его с CoffeeScript, jQuery и Knockout.js.

Ответ 3

В качестве альтернативы вы можете сделать снимок JayData, который поддерживает oData - на основе библиотеки supercool datajs. Он обеспечивает абстрактный уровень доступа к данным через несколько поставщиков или протоколов хранения данных, одним из важных из которых является OData.

Вышеупомянутый запрос будет выглядеть примерно так.

var  source = new $data.yourOdataContext({serviceUri:"http://odata.netflix.com/v2/Catalog"});

source.Titles
  .take(5)
  .forEach( function(catalog) { render(catalog); });

Как вы и не ожидали, что это будет переведено на... /Titles? $filter = 5, поэтому операции не выполняются на клиенте, даже если может предложить простой синтаксис.

JayData предоставит вам JavaScript Language Query (JSLQ), позволяющий запрашивать данные с помощью стандартной функции фильтрации ES5: все с JavaScript, а не знание синтаксиса запроса OData.

Ответ 4

Если вы хотите отображать данные в таблице и использовать сортировку, подкачку, поиск, вы можете использовать плагин jQuery dataTables https://www.datatables.net/ с OData разъем http://vpllan.github.io/jQuery.dataTables.oData/

Вам не нужно какое-либо дополнительное программирование, так как dataTables будут выполнять для вас операции.

Ответ 5

Вы могли бы этот клиент OData на основе аксиомы, которые я написал.

https://github.com/fabio-nettis/ODCJ

Соединитель OData для Javascript или более известный ранее как ODCJ - это клиент, основанный на обещаниях, который использует axios для установления соединений со службами OData V3/V4. ODCJ предоставляет множество полезных функций для настройки URL-адреса запроса и свойств фильтрации.