web-dev-qa-db-ja.com

HTML / JavascriptでODataサービスを利用する方法は?

私たちのプロジェクトは現在、Silverlightを使用してOdataサービスを利用しています。 ODataサービスを参照するだけで、生成されたサービス参照/エンティティを提供できるため、これにより生活がかなりシンプルになりました。

ただし、Html(html5)に移行する必要があるかどうかについては、いくつかの議論があります。この変更を行う場合に何が期待できるか知りたいのですが。もちろん、jQueryのようなフレームワークを活用します。

  • 私の主な関心事は、JavaScript/jQueryを介して同じODataサービスを利用する方法です。
  • このODataサービスから返されたエンティティを非直列化/直列化するにはどうすればよいですか?
  • データコントラクトはハードコード化されているはずですか(そうであれば、これは本当に受け入れられません)?

ありがとう!

19

ODataソースはJSONとしてデータを返すことができます したがって、WebページはデータをXHRしてJSONとして受け取ることができ、JSONとして逆シリアル化されて、JavaScriptオブジェクトに戻され、選択して動作または表示することができます。

ここにあなたが始めるためのいくつかの追加リンクがあります:

HTH。

16
Rich Turner

また、JavaScriptからのODataの消費を大幅にスピードアップする Data.js(http://datajs.codeplex.com/) と呼ばれるかなりクールな小さなライブラリも作成しました。以下は、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での使用に成功しています。

11

別の方法として、oDataをサポートする JayData にショットを与えることができます-supercool datajsライブラリに基づいています。複数のストレージプロバイダーまたはプロトコル上に抽象的なデータアクセスレイヤーを提供します。そのうちの1つが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言語クエリ(JSLQ) を提供し、ES5標準フィルター関数を使用してデータをクエリできます。すべてJavaScriptを使用し、ODataクエリ構文の知識は必要ありません。

3

テーブルにデータを表示し、並べ替え、ページング、検索を使用する場合は、jQuery dataTablesプラグイン https://www.datatables.net/ をODataコネクタ http:/と共に使用できます。 /vpllan.github.io/jQuery.dataTables.oData/

DataTablesが操作を実行するため、追加のプログラミングは必要ありません。

1
Jovan MSFT

私が書いたaxiosに基づいてこのODataクライアントができます。

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

Javascript用のOData Connectorまたは以前はODCJと呼ばれていたものは、axiosを使用してOData V3/V4サービスへの接続を確立するpromiseベースのクライアントです。 ODCJには、リクエストURLとフィルタリングプロパティをカスタマイズするための便利な機能が多数用意されています。

0
Sudo.Root