AtomPubをいつ使用する必要がありますか?


13

私はRESTful Webサービスの設計に関する研究を行ってきましたが、重要な決定点と思われるものに到達したため、アドバイスを得るためにコミュニティに提供すると思いました。

RESTfulアーキテクチャの原則に沿って、発見可能なAPIを提示したいので、さまざまなHTTP動詞を可能な限り完全にサポートします。私の難しさは、これらのリソースの表現の選択にあります。ご覧のとおり、検索結果の表示方法や他のリソースへのリンクの提供方法を​​カバーする独自のAPIを思い付くのは簡単ですが、これは私のアプリケーションに固有のものです。

Atom Publishing Protocol(RFC 5023)、およびODataがその使用を促進する方法について読んだことがありますが、(現在の)かなり単純なAPIに対して抽象化のレベルを追加するようです。

だから私の質問は、開発者が表現の選択としてAtomPubを選択する必要があるのはいつですか?そうでない場合、現在推奨されているアプローチは何ですか?


1
これに関する興味深い議論がここにあります:comments.gmane.org/gmane.comp.web.services.rest/16023
ゲイリーロウ

回答:


11

これについてかなりの量の研究を行った後、ここに私の発見があります:

AtomPub、OData、HALの3つの主要な形式とアプローチがあるようです。以下にそれぞれの研究をまとめました。

AtomPub

  • プロ:確立された標準
  • Pro:XMLおよびJSONで動作します
  • プロ:Apache Abderaを介した優れたJavaサポート
  • 短所:Abderaは多くの依存関係を導入します
  • 短所:サーバー側での作業が非常に複雑
  • 欠点:完全なJavaScriptクライアントを構築するのが難しい

OData

  • Pro:AtomPubでビルドする
  • Pro:XMLおよびJSONで動作します
  • プロ:odata4jプロジェクトを通じてJavaを適切にサポート
  • 利点:適切なURIクエリ構造を提供します

  • 欠点:完全なフレームワークを導入します(Dropwizardを本質的に置き換えます)

  • 短所:作業が非常に複雑で、特にエンティティデータモデル(EDM)
  • 短所:EDM用のWindows専用ツールに依存せずに適切なJavaScriptクライアントライブラリを見つけるのが難しい

HAL

  • プロ:軽量で拡張可能なアプローチを導入
  • Pro:XMLおよびJSONで動作します
  • プロ:JAXBモデルを作成して実装するのは簡単(依存関係なし)
  • Pro:優れたリンクフレームワークを提供します
  • プロ:jQuery XML解析を使用してJavaScriptクライアントを作成するのは簡単
  • 短所:批准されていません(ただしIETFに近づいています)

それでは、AtomPubをいつ使用する必要がありますか?

追加の複雑さに満足しており、クライアントに標準ライブラリを使用する場合は、上記からAtomPubを選択する必要があります。これはおそらく、大きなドキュメントリポジトリを実行している場合に当てはまります。

他の人の助けになるかもしれない最近のブログ記事に、この質問の範囲外の詳細を入れました。

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