BT

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

| 作者: Jan Stenberg フォローする 29 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2013年10月6日. 推定読書時間: 2 分 |

原文(投稿日: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#で書かれている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT