REST を理解しようとしている

Roy Fielding の REST (REpresentational State Transfer) を理解しようとしている。全然わからない。

経緯としては、こういうことのよう。

つまり REST は HTTP をちゃんと使うためのアーキテクチャの1つということなのだろうか。そういう観点で REST 制約を確認するとなんとなく腑に落ちる。

REST 制約

制約概要
1. Client-server archtectureユーザーインターフェースと処理を分離する
2. Statelessnessサーバでアプリケーション状態を持たない
3. Cacheabilityクライアントとサーバの通信回数を減らす
4. Layered Systemシステムを階層に分離する
5. Code on Demand (optional)プログラムをサーバからクライアントにダウンロードして実行する
6. Uniform Interfaceインターフェースを固定する
  6.1 Resource identification in requestsアドレス可能性
  6.2 Resource manipulation through representations表現を通じたリソース操作
  6.3 Self-descriptive messages自己記述的メッセージ
  6.4 Hypermedia as the engine of application state (HATEOAS)ハイパーメディア制約

REST はシステムの大きな枠の設計で、ネットワークシステムのアーキテクチャスタイルの1つ。ちなみに SWEBOK による分類だと OOP とか DDD とかはマイクロアーキテクチャパターン(デザインパターン)と呼ぶ。REST とは別のレイヤーの話になるので混同しないようにしたい。

少し理解は進んだ気がするが、やっぱり全然わからない。


  1. Leonard Richardson, Sam Ruby『RESTful Web サービス』O'REILLY 2007年12月
  2. https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
  3. https://en.wikipedia.org/wiki/Representational_state_transfer
  4. http://web.archive.org/web/20130330045743/http://www.geocities.jp/yamamotoyohei/rest/rest-to-my-wife.htm
  5. https://www.infoq.com/jp/news/2010/03/RESTLevels/
  6. https://speakerdeck.com/koriym/rest-6-plus-4falsezhi-yue