ヌンタコのプログラミング学習ブログ

フィヨルドブートキャンプ37期生

RESTの考え方を理解する

RESTってなんだ?

Webサービスの設計モデルらしい。REST化したWebサービスはHTTPメソッドでアクセスするとデータの送受信をクライアントとサーバーサイドでやりとりしてくれる。

色々あるアーキテクチャスタイルのうち、クライアント/サーバーの設計が有名である。そのうちのRESTはアーキテクチャの中で色々と制約をつけてコンパクトにしたもののイメージ。

そしてRESTは複数のアーキテクチャスタイルから組み合わせて構築した複合アーキテクチャスタイルを指す。

RESTアーキテクチャの構成

  1. ステートレスサーバー
  2. キャッシュ
  3. 統一インターフェース
  4. 階層化システム
  5. コードオンデマンド

この1~4項目に即したWebサービスRESTfulと言われる。

リソースとは?

Web上の名前を持ったありとあらゆる情報 このリソースを識別するにはURIを使います。

URI

統一リソースの識別子 これにより全てのリソースを一意に示せる。

URIが備える、リソースを簡単に指し示せる性質はアドレス可能性と呼ぶ。 リソースに対して名前がついていて、適切な手段でアクセスできる状態

http://blog.example.jp/entries/1

これをそれぞれ分解すると・・・

  • URIスキーム:http 👉利用プロトコル
  • ホスト名:blog.example.jp 👉DNS
  • パス:/entries/1 👉階層を表すパス

こんな感じになる。

他にも、

  • ポート番号
  • クエリパラメータ
  • URIフラグメント

がつくアドレスもあるよ。

クエリパラメータは検索で何かデータを渡したときに入ります。

それぞれの役割

1 ステートレスサーバー

サーバーはクライアントのセッション情報を保持しません。

多数アクセスに対してセッション情報を保持し続けて、アクセスに対してそれを提示するのは大変。 なのでステートレスがいいという話(多分)

2 キャッシュ

これは以前サイト作成で苦戦した覚えがある。 クライアントサイドで訪問したサイトのデザインやらを記憶している。

ネットアクセスが読み込みスムーズになるメリットに対して、リソースを色々変更した場合に反映しにくい。 キャッシュを削除しないと更新状態が見えなかったりする。

ウルトラリロードとかつけてた気がする。(そんな名前の機能だったかも忘れた)

3 統一インターフェース

CRUDRailsの知識として聞いたことがある。 URIのリソースに対してHTTPメソッドそれぞれ操作するよ。

処理 HTTPメソッド CRUD操作
登録 POST CREATE
取得 GET READ
更新 PUT UPDATE
削除 DELETE DELETE

処理結果に対する返答のステータスコード

コード 状態 説明
200 OK リクエストが正常に処理された
201 Created リクエストが正常に処理され、新規リソースが作成された
204 No Content リクエストが正常に処理されたが、返す新規情報はない
400 Bad Request サーバーが理解できない無効な要求である
401 Unauthorized 要求されたリソースには認証が必要である
403 Forbidden 要求されたリクエストは拒否された
404 Not Found 要求されたリソースはサーバーに存在しない
500 Internal Server Error サーバーでエラーが発生した

4 階層化システム

サイドバーのカテゴリとかも階層構造になってたりしますね。プログラムのディレクトリの階層構造も然り。

何となくイメージできるものは説明は割愛。

5 コードオンデマンド

プログラムをサーバーからダウンロードし、クライアント側で実行するアーキテクチャスタイル ex:Javascript, Flash,Java アプレット

クライアント側をあとから拡張できるよ。

でもアプリケーションのプロトコル可視性は低下する懸念もある。

引用:qiita.com

引用: