BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RESTベースのWeb APIをハイパーメディアでレベルアップする

RESTベースのWeb APIをハイパーメディアでレベルアップする

原文(投稿日:2013/09/30)へのリンク

仕事で新しいWeb APIを作ろうとしたときのことだ。私たちは本当にすばらしいAPIを作りたいと思った。Internetにおける回答は、RESTful APIを作ることだった。Amy Palamountain氏はニュージーランドで開かれたTechEdのプレゼンテーションでこう語った。
あなたの問題にとって、RESTful APIは常にすぐれた解決策なのだろうか? それはコンテキストに依存する。だが、パブリックAPIの場合、Amy氏は自身の経験から、HTTPとWebの中心にある考えに基づいたRESTful APIにすべきであると考えている。

SOAPなどのRPC (Remote Procedure Call) APIには、クライアントとサーバという2つの実行コンテキストがあり、クライアントがリモートでサーバ上のアクションを実行する。このやり方はアクション中心の設計であり、クライアントとサーバを密結合させる事前の合意が必要になる。Amy氏は、これはアクセスしやすさや柔軟性を低下させるので、パブリックAPIにはふさわしくないと言う。たとえば、サーバ側の変更により、クライアント側が動かなくなる可能性が高くなる。

RPCスタイルから移行する最初のステップは、アクションからリソースへ移行することだ。リソースは、ドメインコンセプト、たとえばエンティティを表している。この移行によって、HTTPとURIの考えを受け入れ、HTTP仕様への準拠を高めることで、APIをもっとアクセスしやく使いやすくする。

だが依然として、APIの使い方については固有の知識が必要で、クライアントに埋め込んでおかなくてはならない。リソース間の関係が変化すると、クライアントは動かなくなり、再デプロイが必要になるだろう。

次のステップは、ハイパーメディアを追加することだ。このハイパーメディアリンクは、リソースがどのように関係しているのかを示す手段となる。Web APIでリンクを使うことにより、必要な情報をすべてそこに入れることができる。もはやそれ以外の情報は必要ない。したがって、ハイパーメディアによって、これまでクライアントに埋め込まれていた固有の知識を取り除くことができるのだ。

  • リンクは、リソースが互いにどのように関係しているかを示す。
  • リンクは、問題空間とやりとりする方法、次の可能なアクションを示す。
  • リンクは、あとから問題空間で取り得る選択肢を動的に追加・削除することを可能にする。

とはいえ、特にクライアント側では、検討を必要とする問題がいくつかある。Hypermedia APIはハイパーメディア駆動のクライアントを必要とし、クライアントはサーバが使っているメディアタイプを理解する必要がある。メディアタイプは、リンクやフォームといったものの意味を表している。

Amy氏はこのプレゼンテーションで、サーバと2つのクライアント、リソースとURIを使うクライアントとハイパーメディアを使うクライアント、による例を挙げている。これらはすべて、ASP.NET Web APIフレームワークを使って、C#で書かれている。

この記事に星をつける

おすすめ度
スタイル

BT