Help us understand the problem. What is going on with this article?

RESTとは何でしょう?

RESTとは

  • RESTとはRepresentational State Transferの略語
  • WWWのような分散ハイパーメディアシステムのためにあるソフトウェア・アーキテクチャの一つ
  • Webに存在しているすべての資源(イメージ、動画、DB資源等)に固有URIを与えて活用することで、資源を定義し資源のアドレスを指定する方法論

※URI:「Uniform Resource Identifier」の略で、Web上にあるあらゆるファイルを認識するための識別子の総称で、URNとURLで構成されています。

上記のようなREST式のシステムはRESTfulと呼ばれています。

CRUDオペレーションとHTTPメソッド

  • Create : POST (リソース登録)
  • Read : GET (リソース照会)
  • Update : PUT (リソース更新)
  • Delete : DELETE (リソース削除)

RESTの構成

  • 資源(Resource)、 URI
    • 全てのリソースは固有IDを持っていてIDはサーバーに存在し、クライアントは各リソースの状態を操作するため、リクエストを送る。HTTPでこういったリソースを識別するIDは「Students/1」のようなHTTP URI です。
  • 行為(Verb)、HTTPメソッド
    • クライアントはURIを使用してリソースを指定しリソースの操作するためにメソッドを使います。HTTP プロトコルではGET、POST、PUT、DELETEのようなメソッドを提供しています。
  • 表現(Representations)
    • クライアントがサーバーにリクエストを送ったときレスポンスとして送られてくるリソースの状態をRepresentationといいます。RESTで一つのリソースはJSON、XML、TEXT、RSSなどのいろいろな形のRepresentationで表現できます。

RESTの特徴

1.Uniform(ユニフォーム・インターフェース)
Uniform Interfaceは、URIで指定されたリソースへの操作を統一して、限定的なインタフェースで実行するアーキテクチャスタイルを指します。

2.Stateless(ステートレス)
RESTはステートレスの属性を持ちます。言い換えると、作業の状態情報を別途保存して管理することはしません。セッション情報やCookie情報を保存して管理していないため、APIサーバーは受信したリクエストだけを単純に処理すればよいでしょう。これによってサービスの自由度が高くなり、サーバーで不要な情報を管理しないことから、実装が簡単になります。

3.Cacheable(キャッシュ可能)
RESTの最大の特徴の1つは、HTTPという既存のWeb標準をそのまま使用して、Web上で使用する既存のインフラをそのまま活用できるということです。したがってHTTPが持つキャッシュが適用できます。HTTPプロトコル標準で使用するLast-ModifiedタグやE-Tagを使うと、キャッシュの実装が可能です。

4.Self-descriptiveness(自己表現構造)
REST APIメッセージだけ見ても簡単に理解できる独自の表現構造になっています。これはRESTのもう1つの大きな特徴です。

5.Client – Server構造
RESTサーバーはAPIを提供し、クライアントはユーザー認証やコンテキスト(セッション、ログイン情報)などを直接管理する構造になっています。それぞれの役割が確実に区別されており、このため、クライアントとサーバーで開発すべき内容が明確になり、相互依存関係が低減されます。

6.階層型構造
RESTサーバーは複数レイヤで構成され、セキュリティ、負荷分散、暗号化レイヤなどを追加できる柔軟性のある構造になっています。プロキシ、ゲートウェイなどのネットワーク基盤の中間媒体を使用できます。

RESTのメリット・デメリット

メリット

  • 使いやすい
    • HTTPプロトコルのインフラをそのまま使用するので、別途インフラこうつくが必要ないです。
  • クライアントとサーバーの役割が明確に分離されている
    • クライアントはREST APIを使ってサーバーと情報のやり取りを行います。RESTの特徴の中で「Stateless」によるサーバーはクライアントのContextを保持する必要はないです。
  • 特定データ表現が使える
    • REST APIはヘッダー部分にURI処理メソッドを明示して必要なデータは「body」に表現できるように分離されているのでJSON、XMLなど使いたいRepresentation言語で使用可能です。

デメリット

  • メソッドが限られている
    • HTTPはHTTPメソッドを使ってURIを表現します。こういった表現は使いやすいメリットがありますが、逆にいうとメソッドが決められていることがデメリットです。
  • 標準がない
    • RESTは設計ガイドだけで標準ではありません。明確な標準がないのもデメリットだと思います。

参考

https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa
https://meetup-jp.toast.com/931

Anveloper
諦めなければできるだろう!
https://anveloper.wordpress.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away