JSONを持っている場合、Odataの必要性は何ですか?


23

Odataのポイントと、それがいつ意味をなすかを理解しようとしています。今の私の仕事は、ASP.NETとMVC / WebApiコントローラーを使用してオブジェクトをJSONにシリアル化/逆シリアル化し、javascriptに何かをさせることです。

ODataの利点は、URLから直接クエリできることからわかりますが、クライアントコードとサーバーコードを記述しているので、その必要はありません。

誰かがjavascriptでODayaクエリの結果を解析することはありますか?

たぶん、ODataは、JSONが提供しないクエリから詳細な情報を取得するために、すべてのクライアントに汎用エンドポイントを提供することに関するものでしょうか?もし私がデータの提供者だったら、それがodataの目的だと思いますか?

REST / JSON / ODATAの目的と使用法を理解してください。


2
物事を「より簡単に」するために、Linked DataLinked Data PlatformSPARQL、およびData Catalog Vocabularyに興味があるかもしれません。それらのすべては、異なる目的のために役立つ異なるものであり、それはと組み合わせることができJSON、例えばSPARQL 1.1クエリは、JSONフォーマット結果として当然のREST
-Trylks

回答:


42

JSONは、JavaScriptに基づく単なるデータ交換形式です。

RESTはアーキテクチャスタイルであり、ODataはデータを生成および消費するために設計されたRESTの特定の実装であり、AtomPubとJSONの2つの形式をサポートします。

したがって、プレーンなRESTとODataを使用したJSONの違いは、データ操作用のODataのオプションです。たとえば、ODataプロトコルを使用してデータをクエリする場合、URIで以下のオプションを指定できます。

  • $ orderby
  • $ top
  • $ skip
  • $ filter
  • $ format
  • $ select

投影、リソースのリンクなどを行うことができ、これらのオプションはすべてそのまま使用できます。ここで、これらすべての機能を独自のRESTサービスで提供する必要がある場合、想像する必要があります。

  • それらをすべて実装する
  • さまざまな操作のために独自の規則/キーワードを作成する

それは多くの作業であるだけでなく、不整合につながり、データコンシューマーの学習曲線を作成します。


5

JSONまたはJavaScript Object Notationは、単なるデータの形式または標準です。ログイン名やRESTサービスで使用する必要のあるものを送信するための合意された形式です。

この部分を参照してください:http : //en.wikipedia.org/wiki/JSON

JSONはもともとJavaScriptスクリプト言語から派生したものですが、JSONは言語に依存しないデータ形式であり、JSONデータを解析および生成するためのコードは、さまざまなプログラミング言語ですぐに利用できます。

特定のプログラミング言語の一部ではないため、JSONを使用していることがわかっていれば、さまざまなシステムがデータを簡単にやり取りできます。

RESTに関しては、Webサービスに使用されるアーキテクチャのスタイルにすぎません。

この部分を参照してください:http : //en.wikipedia.org/wiki/Representational_state_transfer

これについて考える1つの方法は、多くの異なるコンピューターが対話して情報を交換できるWebサービスを作成したい場合です。URL経由でデータを受け入れるWebサービスを作成できます

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

応答は、データが受信されたことを示すJSONオブジェクトである可能性があります。

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

ODataについて聞いたことがなかったので、グーグルで検索しました。

ODataは、Atom構造が各ODataリクエストから返されたデータを含むエンベロープであるAtomPubプロトコルとJSONに基づいて構築されます。ODataリクエストは、すべてのリクエストにRESTモデルを使用します。各RESTコマンドはPOST、GET、PUT、PATCH、またはDELETE http要求(CRUDへのマッピング)であり、コマンドの詳細はURLにあります。

GET:エンティティのコレクション(フィードドキュメントとして)または単一のエンティティ(エントリドキュメントとして)を取得します。

POST:エントリ文書から新しいエンティティを作成します。

PUT:既存のエンティティをエントリドキュメントで更新します。

PATCH:部分的なエントリドキュメントで既存のエンティティを更新します。

削除:エンティティを削除します。

ODataのように聞こえますが、バニラのRESTスタイルアーキテクチャを補強するために書かれたものです。しかし、C#または使用している言語でゼロから作成するのではなく、追加することができるように見えます。

ODataを使用して作業を進めている場合、JSONを使用していることになります。

誰かがjavascriptでOData(sic)クエリの結果を解析することはありますか?

はい、JSONを使用しているため(そうですね)。JSを使用するのはまったく自然なことです。

たぶん、ODataは、JSONが提供しないクエリから詳細な情報を取得するために、すべてのクライアントに汎用エンドポイントを提供することに関するものでしょうか?もし私がデータの提供者だったら、それがOdataの目的だと思いますか?

OdataはRESTサービスを提供しますが、プレーンな「汎用」RESTサービスエンドポイントの上にいくつかの標準サービスを追加します。クライアントは、ODataを使用するか、独自のC#サービスを展開するかを気にしません。応答が合意された形式(JSONなど)であったため。ただし、多くの「すぐに使える」機能を提供するため、作業のためにODataを使用したい場合があります。


仕事は気にしません。Odataの目的は何かを知りたかっただけです。JSONはデータを表現するための単なる方法であり、ODATAもそうです。 RESTを使用してJSONを返すだけでは十分ではありません..ODATAを使用することは利点でしょうか?
パンクアウター

いいえ、ODataはRESTfulサービスアーキテクチャです... JSONを使用してデータを表します。あなたは...技術的には自分で書き込むことができませんでした何ものODataライブラリ/標準規格を使用して、何も得ていない..しかし、物事を自分で書くとは対照的に、..あなたはしているがそれで物事を構築する場合のODataはあなたの時間を節約するかもしれません使用したい
エリック

json?しかし、ODataはXMLを返しますか?それとも両方ですか?よくわかりません。
パンクアウター


リンクから「ODataは、XMLベースのAtom形式とJSON形式の2つの形式(コレクション、エントリ、リンクなど)をサポートします。」
Erik

2

「なぜ」という質問については、RESTful Web APIの本に本当に良い定義があります -基本的にODataはコレクションパターンを実装します。コレクションはリンクを介してリソースのリストを提供するリソースです。


2

ODataは、インターフェースの標準を備えたRESTfulサービスの特定の実装です。製品のAPIを公開し、OData標準に準拠していると言う利点は、ODataに精通しているユーザーがAPIドキュメントを読むことに多くの時間を費やすことなくすぐに使用できることです。

欠点:ODataは基礎となるデータベースの公開には優れていますが、この仕様にはトランザクションのサポートが含まれておらず、DBインターフェイスとトランザクションインターフェイスの両方として機能するRESTfulサービスを使用できるアプリケーションでは使用できません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.