Home > Ruby on Rails > RESTはWebAPIの代わりにはならない

RESTはWebAPIの代わりにはならない

Photo by Pulpolux !!!

 bobchinさんの日記から「やっぱRESTは厳しいのかな?」。

 RESTでは、リソースに対して一意のURLに、これって結局データストレージとして使えるっていうだけなんだと思います。MVCでいうmodelの部分。
 これは、これでとても大切な部分なのですが、モデルを検索したり、いろいろ機能をRESTで提供するのは、うまくいかないと思います。

 Railsだと、create, show, update, destroyメソッドはいいのですが、index(list)メソッドをXMLで返すようにしても、あまりうまくいかないケースが多いと思います。1画面に出る情報が多岐にわたるので、きれいに表現できないんですよね。

 1つのコントローラでHTMLとXMLを返す上での最大の問題は、メソッド名の変更が出来なくなることだと思います。APIとして外部に公開してしまうと、メソッドの変更も気軽にできません。

 しかし、RESTfulにすることで、URLやコントローラの設計がきれいになる、Javascriptなど密結合な環境に限定されますが、外部からデータ参照できるなど、利点は多々あります。

 RESTの最大の利点は、デザインパターンと同じで、「このシステムはRESTfulになってるから」っていうと、詳しく話さなくても、全体の把握をしやすくなります。

 なので、システムをRESTfulにすることはいいことだと思います。RESTfulにして考えると、1つのコントローラにアクションを詰め込むのを止めようとか気がつきますし。

 ただ、外部へサイトの機能を公開するためには、別途WebAPIを作る必要があり、それぞれは補完関係にあると思います。

Related posts

masuidrive(増井 雄一郎)
PukiWikiなどのオープンソース活動を経て、2005年からRuby on Railsに的を絞り、WEB2.0社PingKingやニフティ社アバウトミーの開発に関わる。これまでのフリー活動から転身し、2007年は1年だけ会社員として働いた後、起業のため渡米。2008年4月にBig Canvas Inc.設立、iPhoneアプリなどの開発を行う。2009年11月に退社し、現在、米Appcelerator社のテクニカルエバンジェリスト。
Twitterは、@masuidrive

Comments:4

L.star 08-04-16 (Wed) 0:50

Dr. Royの話をApacheCon2008 EUで聞いたのですが、RESTはそもそもWeb APIの代わりとして設計されたものでは*ありません*と熱弁してました。Webのありようを設計したものであって、そもそもWeb Serviceのようなデザインとは似て非なるものだと。比べられることを非常に嫌がっていましたね。RESTはbuzzwordになっちゃった!みたいな。
MVCの”M”を規定している、というのはまさしくその通り。REST自体ステートレスであり、クライアント側でstateful情報を持て!と言っています。完全にサービスとして提供できるレベルを規定しているわけでもありません。しかし、「RESTfulなデータはブックマークできるんだぜ!」というところはずいぶん強調していました;)

スライドはこれかな。
http://us.apachecon.com/us2007/downloads/200711_REST_ApacheCon.pdf

masuidrive 08-04-16 (Wed) 12:25

bookmarkできるっていうのは、確かに大事ですね。

takahashim 08-04-16 (Wed) 21:54

や、スライド資料を見る限り、そこで言う「Web Services」というのはSOAP+WSDL+UDDI的なWSじゃないですか?
いわゆるWebAPIはREST(つまり資料14ページ目の「LCODC$SS+U」)に対して中立で、REST的にもできれば非REST的にもできます。

あと、同じURLでHTMLもXMLも返す、という設計もRESTと直接は関係ないです。

# REST理解への道はまだ遠いのかも……

masuidrive 08-04-17 (Thu) 0:20

たしかにHTMLとXMLの切り替えはRESTとは関係ないですよね。

ただ、RESTfulとXML返しの組み合わせで、機械からの読み込みが可能になるので、API的な使い方ができるなぁという話になりやすいんだと思います。

Comment Form
Remember personal info

Trackbacks:3

Trackback URL for this entry
http://blog.masuidrive.jp/index.php/2008/04/15/rest-not-equal-ap/trackback/
Listed below are links to weblogs that reference
RESTはWebAPIの代わりにはならない from @masuidrive blog
pingback from 次なるもの » Blog Archive » RESTはWebAPIの代わりにはならない 08-04-16 (Wed) 9:02

[...] original article « [ブクシィ] 「日記感覚のブログにいきなりコメントがつけられた感覚」を視覚化する「ブクシィ」を作りました : akiyan.com » [...]

trackback from winplusの日記 08-04-17 (Thu) 8:31

[REST]RESTfulなWebサービスは、WebAPIを提供していないのか…

masuidrive on rails さんの記事で、RESTに関して疑問をもたれているものがありました。何が問題なのかうまく理解できていませんので、まったく勘違いしているかもしれませんが、RESTful Webサ…

trackback from winplusの日記 08-05-18 (Sun) 8:12

[REST]リソースは貧血症?(第2回読書会 RESTful本読書会 第5章)…

第2回読書会 RESTful本読書会 第5章の資料第5章の資料公開 ( RESTful 読書会 ) – Mi manca qualche giovedi`?が公開されています。 とりあげるのは発表資料のここ。 ・オブジェクト指向での設計  -…

Home > Ruby on Rails > RESTはWebAPIの代わりにはならない

Search
Feeds
Meta

Return to page top