感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RESTって何かについての簡単なまとめ

<スポンサーリンク>

RESTの起源について

・Webが成長した理由ってなんだろう?
Roy Fieldingは博士論文『Architectural Styles and Design of Network-based Software Architectures』で、質問の答えとなる「「アーキテクチャの原則」を示した。
http://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf

Webを普及させ、スケーラブルにし、自身のアプリケーションに適用できるようにしているアーキテクチャの原則は、

・アドレス可能なリソースであること

・制約された統一のインターフェースを持つこと

・表現指向であること

・ステートレスな通信が可能であること
→クライアントセッションデータがサーバーに格納されないことを意味する。

・データフォーマットによってアプリケーションにおける状態遷移を駆動すること

である。

・アドレス可能性とは、一意の識別子を通じてシステム内のオブジェクトとリソースに到達可能であるという考えのこと。

■制約された統一インターフェースとは、HTTPメソッドのみを使うという制約を意味する
・GET
読み取り専用の操作。べき等(べきとう)かつ安全な操作。
べき等とは、何度繰り返しても同じ結果が得られること。
安全とは、GETの呼び出しにより、サーバの状態がまったく変更を受けないこと。
・PUT
リクエストと一緒に送信されるメッセージボディをHTTPメッセージで指定した場所に格納するようにサーバーにリクエストするもの。

・DELETE
リソースを削除する際に使用する。

・POST
非べきかつ非安全な操作。

・HEAD
レスポンスボティは返さず、レスポンスコードとリクエストと関連付けられたヘッダのみを返す。

・OPTIONS
通信情報に関する情報をリクエストする。

なぜRESTなのか

分散システムのアーキテクチャへの適用時に、疎結合を実現でき、水平方向にスケーラブルなアーキテクチャを実現できるから。

■統一されたインターフェースのメリット
・親密性(Familiarity)
サービスを指し示すURIが存在する場合、利用者はどのメソッドが利用できるか正確にわかるようになる。
スタブも必要なく、IDLのようなファイルも必要ない。必要なのはHTTPクライアントライブラリだけである。

・相互接続姓(Interoperability)
WebサービスをHTTP上で公開すれば、サービスの利用者とのやり取りは、作ったサービスが規定したデータフォーマットのやり取りだけである。
接続することに関しては、ベンダー固有のライブラリのインストールなどは必要なく、バージョンの差異も気にしなくてもよい。
IEなどのブラウザ間の問題とかは「接続性」の問題ではない。

・拡張性
RESTでは明確に定義されたメソッドのsエットに制約されるため、予測可能な振る舞いを実現できる。
たとえば、WebサービスでHTTPキャッシュを制御したい場合は、サービスに対するキャッシングポリシーを多数の観点から定義できる。

参考にした本

JavaによるRESTfulシステム構築

JavaによるRESTfulシステム構築

感謝のプログラミング

今回で感謝のプログラミングは【258時間目】
10000時間まで、あと【9742時間】