#はじめに
RESTの概念についてはWEBの基礎知識を勉強する中で知りましたが、非常に理解に苦しみました。ということで自分用のメモ+同じことで「???」となっている方の助けになればいいなぁという思いでまとめます。
#本題:RESTとはなんなのか
REpresentational State Transferの略で、WEBにおける設計思想のことです。
この設計思想は以下の4つの項目から成り立っています。
###①全てのリソースに一意なURLでアクセスできる
全てのアクセスの目的語をリソースとして定義し、
その全てのリソースに一意な識別子を持たせることで、
リソースそれぞれにアクセスができます。
リソースってそもそもなんなの?というと、
このQiitaにあるそれぞれの記事だったり、通販サイトの各商品だったり、
情報ひとかたまりを指します。
通販サイトを例にとると、
その通販サイトが持つすべての商品を"items"というリソースとして定義し
その服に1,2,3...15といった識別子をそれぞれ一つずつ持たせる、ということです。
###②HTTPメソッドベースでリソースにアクセスする
識別子をもったリソースにアクセスするときには、
HTTPメソッドGET、POST、PUT、DELETEのいずれかの方法を利用します。
この4つのメソッドにより、リソースに対して何らかの操作を行うのです。
HTTP メソッド | リソースに対して行う操作 |
---|---|
POST | リソースの作成 |
GET | リソースの取得 |
PUT | リソースの更新 |
DELETE | リソースの削除 |
###③ステートレスである
クライアント側とサーバ側のやりとりは一回ごとに完結し、状態管理を行いません。
このおかげで、同じリクエスト(あるリソースに、あるメソッドでアクセスする)に対するレスポンス(アクセスした結果)は常に同じになります。
例えば、通販サイトの商品の一つを閲覧したいとします。
このリソースへのURLは ”http:///通販.com/items/1”、
閲覧の場合、HTTPメソッドにはGETが使われます。
このページにアクセスするまでに、クライアント側でどのようなリクエスト・レスポンスが行われていたとしても、GETメソッドでhttp:///通販.com/items/1にアクセスした場合は商品の閲覧ページが表示される、ということです。
###④リソースへの接続性
各リソースに接続できることです。(そのまま)
ユーザがすべてのURLを知っている必要はありません。
実際、「あの通販サイトのあの商品はこのURLだったよね。。。」といちいち覚えることはできないですよね。
次の情報にアクセスするためのURLをハイパーリンクの形でクライアント側に伝えることで、
ユーザが各リソースに(いずれかのHTTPメソッドで)アクセスすることができます。
##おまけ:RESTfulなサービスとは
上記RESTの考え方に基づいて設計されたサービスを指します。
##最後に
以上、RESTの概念についてまとめてみました。
お気軽にご指摘やコメントをいただけたら幸いです!