« XPの計画ゲームとは? | トップページ | 配置図から非機能用件を類推する »

2008/03/11

REST思想とHTTPメソッドの関係

RESTの基本的な発想は、HTTPメソッドでリソースをCRUDできるはずだ、というアイデア。
では、HTTPメソッドは、そもそもどんなものなのか?

安全なメソッドと冪等{idempotent} なメソッド」でいくつか語られている。

「RESTful Webサービス」で「べき等」という概念が出てくる。
「べき等」とは、同じ操作を何度行っても同じ結果であること。つまり副作用がなく安全であることを意味する。

少なくとも、GETはべき等に使うならば、安全であると言える。
しかし、GETで、リソースの削除や更新を行う時も、実はよくある。

REST思想に従うならば、GETは副作用を起こしてはいけない。
POST、PUT、DELETEがリソースの更新で副作用を起こすように使うべき。

RailsはREST思想を忠実に反映している。
また、Strutsも「http://~/***.do」というURLを見ると、RESTの発想を実現しようとしているニュアンスが感じられる。

更に、WebDAVとHTTPメソッドは親近な関係にある。
WebDAV メソッド」ではこんな風に説明している。

WebDAV とは "Web-based Distributed Authoring and Versioning" の略で、Web サーバ上でファイルの編集や管理等の共同作業を行えるようにする事を目的に開発されました。
(snip)
その後、1992 年に書かれた HTTP/1.0 の初期バージョンでは、PUT や DELETE といった HTTP/1.1 で盛り込まれるメソッドに混ざって、CHECKOUT や CHECKIN, SEARCH といった WebDAV で提案されているメソッドも見られます。
これらは明らかに、WWW を「サーバからクライアントへの単なるリソース配布するためのもの」から、「WWW 上でリソース編集を行うためのもの」にする狙いが読み取れます。
この「リソース編集のための仕組みを HTTP に組み込む」という考え方は、PUT や DELETE という形で HTTP/1.1 に盛り込まれ、更に現在の WebDAV へと着実に受け継がれています。

この発想を突き詰めると、「WWW上でリソース編集したいというモチベーションがREST思想なのだ」と言えるのではなかろうか?

|

« XPの計画ゲームとは? | トップページ | 配置図から非機能用件を類推する »

プログラミング」カテゴリの記事

コメント

REST (アーキテクチャスタイル)ではHTTPメソッド(インターフェース)は統一されているべき、としかなっていません。じっさいに*どの*統一インターフェースのメソッドを採用するかはアーキテクチャの設計者に任せられています。

たとえば紹介していただいている RESTful Web サービスではリソース指向アーキテクチャというアーキテクチャ(!=スタイル)を提唱し、ROA では HTTPの六つのメソッド(GET/POST/PUT/DELETE/HEAD/OPTIONS)を採用し、WebDAV で拡張されたメソッドは使わないことが明記されています。

自分の作るシステムでリソース編集をするために六つのメソッドで充分なのか、はたまた WebDAV 拡張が必要なのかは REST 的にはどっちでもよくて、設計者次第です。


ちなみに私自身は ROA の六つのメソッドでほとんどの場合は充分だと思っています。

投稿: yohei | 2008/03/12 08:03

◆yoheiさん

著者の方のコメントを頂けて嬉しいです!
自分の思いを整理し切れてなかったです。。

RESTを知るには、HTTPメソッドという概念をもっと理解しなくてはと思ってます。
Webアプリの弱点はHTTPメソッドにあるような気がしてならないから。

投稿: あきぴー | 2008/03/13 00:57

コメントを書く



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


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: REST思想とHTTPメソッドの関係:

» [REST]安全と冪等 [winplusの日記]
安全 サーバの状態を変化させないこと。 冪等 一つのリクエストの実行結果が、同じリクエストを複数回実行した結果と同じであること。 算数でかくと、以下のとおり。 操作初期値1回目2回目3回目 x1  4  4  4  4 安全 x0  4  0  0  0 冪等 +1  4  5 ... [続きを読む]

受信: 2008/04/01 21:14

« XPの計画ゲームとは? | トップページ | 配置図から非機能用件を類推する »