OData vs REST 両者の違いとは?


これまで、システム間の通信条件を定義するためのプロトコルや標準が数多く登場してきました。これらのテクノロジーをみていくと、ODataとRESTという2つのキーワードに出くわしたことがあるかもしれません。

ODataとRESTは密接に関連した概念ではありますが、全く同じものではありません。このブログでは、「RESTとは何か?」と「ODataとは何か?」とともに、両者の違いについて解説します。

RESTとは?

REST (REpresentational State Transfer) は、HTTP プロトコルを使用して2つの異なるシステム間でメッセージを送信する方法を定義するソフトウェアアーキテクチャスタイルです。20年前にRoy Fieldingによって開発されたRESTは、World Wide Web上で情報を交換するための最も一般的なアーキテクチャに成長しました。

REST標準は、Webサービスのための6つの異なる原則やアーキテクチャ上の制約を概説しています。

  • 統一されたインターフェース:RESTシステム内のすべてのコンポーネントは、お互いに通信するために同じルールとインターフェースに従わなければなりません。各リソースは URIによって一意に識別されます。
  • クライアント-サーバー:RESTでは、情報の保存と送信に関わるサーバと、情報の取得と適切な利用に関わるクライアントを分離しています。この分離により、両者の独立性と拡張性を高めることができます。
  • ステートレス:RESTを使用して行われるすべてのリクエストはステートレスです。リクエストが完了した後、サーバーはパラメータや状態を保存する必要がありません。例えば、クライアントが制限されたリソースへのアクセスを要求した場合、クライアントはリクエストを行うたびに認証トークンをサーバに送信しなければなりません。
  • キャッシュ可能:RESTのクライアントとサーバーの両方でリソースをキャッシュすることができ、トラフィックを減らしてパフォーマンスを向上させることができます。
  • レイヤードシステム:クライアントはシステム内の1つのサーバとのみ通信し、他のサーバは認証やデータ保存などの機能を実行します。クライアントは、エンドシステムと通信しているのか仲介者と通信しているのかを見分けることができません。 コード・オン・デマンド:これは必須の原則ではありませんが、RESTリクエストは必要に応じてロジックや実行可能なコードを返すことができます。

上記の原則を守ったAPIをREST(またはRESTful)APIと呼びます。

ODataとは?

ODataのウェブサイトによると、OData(Open Data Protocol)は「RESTful APIの構築と使用のためのベストプラクティスを定義しています。ODataは、リクエストヘッダとレスポンスヘッダ、ステータスコード、HTTPメソッド、URL規約、メディアタイプ、ペイロードフォーマット、クエリオプションなどを定義するための様々なアプローチを気にすることなく、RESTful APIを構築しながらビジネスロジックに集中できるようにします。」

マイクロソフトで最初に作成されたODataは、非営利コンソーシアム OASIS (Organization for the Advancement of Structured Information Standards) によって標準化されました。IBM、SAP、Salesforceなどの巨大テクノロジー企業は、いずれも社内のIT環境でODataを使用しています。

ODataの最も重要な構成技術はRESTです。OData 3.0標準によると、ODataのユーザーは 「正当かつ具体的な理由がない限り、RESTの原則に従うべきである」とされています。

OData標準は、RESTリクエストに応答してデータを転送するために使用されるデータモデルも定義しています。ODataはデータ転送のために2つの異なるプロトコルをサポートしています。XMLベースのAtomフォーマット(ウェブリソースの公開と編集目的)とJSON(人間が読める形でのデータの保存目的)です。

最後に、変更のトラッキング、再利用可能なプロシージャの定義、複数(バッチ)のRESTリクエストの送信などのアクションを実行する方法についてのガイダンスが含まれています。

両者の違いをまとめると?

前述した内容を整理すると、ODataとRESTの違いは次のようになります。

  • RESTはHTTPプロトコルで情報をやり取りするためのアーキテクチャスタイルです。REST標準は、あらゆるREST APIが遵守しなければならない6つの原則(1つはオプション)を定義しています。
  • ODataはRESTフレームワークの上に構築され、HTTPメッセージ形式やAPIのクエリ方法など、REST APIを構築するためのベストプラクティスを定義しています。ODataはユーザーに常にRESTの原則に従うことを推奨していますが、やむを得ない理由がある場合は、この要件を緩和することができます。さらに、ODataでは、データはAtomまたはJSON形式で転送することを指定しています。

ちなみにXplentyのRest APIコネクターは、Rest APIだけでなく、ODataへも接続可能です。
XplentyからどのようにOdataへ接続し、データを取得できるかに興味のある方は、こちらのブログをご覧ください。