« PHP,Ruby論争 | トップページ | Railsで簡易カレンダ »

2008年2月 7日 (木)

RESTの意味が解りかけてきた。

RESTって何が嬉しいのかいまいち判っていなかった。 RESTの特徴にステートレスが挙げられるが、この ステートレスっていう用語が今いちピンと来ていなかった。

HTTPはそもそもステートレスだし。

と気になって、今日時間があったからネットで調べてみた。 yohei-y:weblog: ステートレスとは何か を読んで、始めてピンと来た。 ステートフルの例としては、mixi のトップページが挙げられる。

mixiのトップページのURLは誰もが、http://mixi.jp/home.pl である。ただ、アクセスする人によって、内容はまったく違う。

Aさんが開けば、Aさんの日記だし、Bさんが開けば、Bさんの日記だ。 なぜかと言えば、ログイン以降、自分のIDをURL以外の方法でサーバに 送っているからだ。

この利点はみんなが同じアドレスを使えるということが利点である。

ただ、この方法が好ましくない場合もある。

例えば、旅行のWebページがあるとする。

私が旅行の条件に料金や国を設定して、検索ボタンを押すと、 条件にあった結果画面が表示された。

一緒に旅行に行く友人に私が結果画面のURLを送って、友人は そのURLをアクセスするとエラーが表示された。

なぜなら、私が検索ボタンを押した時にどういう条件かをサーバに 送信したため、サーバはその条件に基づいて、結果画面を表示できる のに対し、友人は検索を行っていないため、どういう結果を表示したら いいのか解らないためだ。

このように検索状態→結果表示状態という2つの状態があり、いきなり 結果には行けないという仕組みがステートフルと呼ばれる

では、ステートレスはどうか?

私が旅行の条件に料金や国を設定して、検索ボタンを押すと、 条件にあった結果画面が表示されるまでは一緒だ。 ただし帰ってくるURLに検索条件の情報も含まれている。

(例)

ステートフルの場合の結果画面のURL

http://適当/kekka.html

ステートレスの場合の結果画面のURL

http://適当/kekka.html?country=india&max_cost=100000

(10万円の予算でインドに行くツアー)

このステートレスの場合、URLを友人に送ったとしても、 URLに検索情報が含まれているため、友人も検索せずに、いきなり 結果画面を見ることができる。

なるほど、そういうことかー。

ってリンク先のWebページを書いている人は、今読んでいる「RESTful Webサービス」 の監訳している山本 洋平さんだった。

この方の書いたREST入門 はめちゃくちゃ解りやすい。

残念ながら、本のほうは、3章のS3の解説で挫折中。

気になって、めくると1章から3章まではREST的なWebサービス の利用プログラムの実装 についてで、4章からようやくRESTの概説が始まっている。 普通は逆だと思うんですが、どういう意図があるのだろう? ともかくようやく判ってきたから、読みすすめられそうだ。

|

« PHP,Ruby論争 | トップページ | Railsで簡易カレンダ »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/40038461

この記事へのトラックバック一覧です: RESTの意味が解りかけてきた。:

« PHP,Ruby論争 | トップページ | Railsで簡易カレンダ »