#この記事で説明する事項
WEBの世界では,「RESTful」と呼ばれるサービスが存在する.このRESTfulとその周辺の知識について説明する.
#RESTfulとは
WEBアプリケーションというのは,いくつかのWEBページがあり,そこにアクセスするとアプリケーションの画面が表示され,そこで様々な作業を行うような仕組みになっている,画面には,各種の表示やインターフェースとなるGUI部品が表示され,それらを操作する,
ところが,WEBの世界には,こうした「画面に表示されない部分」を持たないものもある.「WEBサービス」と呼ばれるものがそれに当たる.これらは,サーバにアクセスして必要な情報を取得したり,情報を送って保存したりできるが,一般的にみられるような画面表示は持っていない.
こうしたWEBサービスは,利用者が自分でWEBブラウザからアクセスして利用するにではなく,他のプログラムがアクセスして利用するためのものと考えても良い.こうしたWEBサービスの分野でよく耳にするのがRESTやRESTfulと言った言葉である.
##REpresentation State Transfer
RESTというのは,「REpresentation State Transfer」の略で,分散型システムを構築するための考え方である,インターネットのあちこちにプログラムが分散して存在し,それらが相互にやりとりをしながら動くようなシステムを考えた時,どういう仕組みにしたらいいか,その答えの一つがRESTである.
RESTは,HTTPのメソッドを使って決まったルールに従ったアドレスにアクセスすることで,必要な情報を取得したり.情報を保存したりできるようにする.HTTPなので,他のサーバからアクセスして情報を取り出したりできる.
このRESTという考え方に基づいて設計されているプログラムをRESTfulである,と表現する.RESTfulなサービスは,情報の取得や送信など基本的な操作の方法が統一されているため,他のプログラムから簡単にアクセスしてサービスを利用できる.
#RESTの考え方
##リソース指向
以下のような考え方をするというもの.
・WEB上に存在する全ての情報はリソースである.
・リソースは識別器(URI)を持つ
・URIを用いることで,プログラムはリソースが表現する情報にアクセスできる.(ちなみにURIはリソースを示すべきなので,名詞のみで構成されることが原則)
・ディレクトリ構造に似たURIを定義
##統一インタフェース
全てののWEBシステムでURIとHTTPメソッド(GET,POSTなど)という同じインタフェースを利用する,このようなスタイルのことを統一インタフェースと呼ぶ.
##ステートレス
リクエストに処理に必要な全ての情報を持つというもの.ステートとは「状態」を意味する.ステートフルとは違い,自己完結型である.サーバ資源をすぐに解放できるため,利用者や負荷の増大に応じて,性能や機能を向上させられる.ステートレスであれば,各要求で別々のサーバがクライアントのリクエストに応答(レスポンス)することが可能である.
#RESTのメリット
・アプリケーション中のリソースが,URIで示せる
アドレス欄に入力すれば,そのリソースを参照できる.
・ステートレスにすることで,スケーラビリティが向上
将来想定されるシステムの規模の増大に対応可能な設計.RESTの一番のメリットとされる部分である.
・統一インタフェース
シンプルで一貫性のある設計.リソースへの操作はCRUDの4種類という制約.
メソッドを限定することによりプロトコルがシンプルに保たれる.
・標準なデータフォーマット(XML,JSON)を扱うことで,他のシステムとの連携が容易になる.
・RESTに基づいたWEBアプリでは,インタフェースが固定されているため,互換性の問題が発生しない.
#まとめ
REST原則に基づいてシステムを構築することで,色々とメリットがあるよ.だからREST原則に則ってシステムを構築しRESTfulなサービスを構築しようね.て感じでいいかな.