web-dev-qa-db-ja.com

JSONがある場合、Odataの必要性は何ですか?

Odataのポイントと、それが意味をなす時期を理解しようとしています。現在のところ、私が作業している方法は、ASP.NETおよびMVC/WebApiコントローラーを使用してオブジェクトをJSONにシリアル化/逆シリアル化し、JavaScriptでそれを実行することです。

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

JavaScriptでODayaクエリの結果を解析する人はいますか?

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

REST/JSON/ODATAの目的と使用法を理解できるようにしてください。

23
punkouter

JSONは、JavaScriptに基づいた単なるデータ交換フォーマットです。

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

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

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

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

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

これは多くの作業であるだけでなく、矛盾を引き起こし、データ消費者の学習曲線を作成します。

42

JSONまたはJavaScript Object Notationは、データの形式または標準にすぎません。これは、ログイン名OR REST Service。

この部分を参照してください: 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はAtomPubプロトコルとJSONに基づいて構築されており、Atom構造体は各ODataリクエストから返されたデータを含むエンベロープです。ODataリクエストはRESTすべてのリクエストのモデル。各RESTコマンドは、POST、GET、PUT、PATCH、またはDELETE httpリクエスト(CRUDにマッピング)であり、コマンドの詳細はURLにあります。

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

POST:エントリドキュメントから新しいエンティティを作成します。

PUT:既存のエンティティーをエントリー文書で更新します。

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

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

ODataはバニラRESTスタイルのアーキテクチャーを補強するために書かれたものです。しかし、C#で最初から物事を書くのではなく、それを実行するためにいくつかの追加物を与えることができるようです。またはあなたが使用している任意の言語。

仕事でODataを使用するように強いられている場合でも、JSON ..を使用することになりますが、Microsoftなどによって作成されたODataフレームワーク/標準の範囲内です。

JavaScriptでOData(sic)クエリの結果を解析する人はいますか?

はい、そうです(そのように聞こえます)それはJSONを使用しています。 JSを使用するのは完全に自然なことです。

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

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

5
Erik

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

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

2
user3808122

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

2
Plesiosaur