0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

いまさらREST

Posted at

REST とは

REpresentational State Transfer の略です。
システムのアーキテクチャを構成するための設計原則です。

リソース

リソースはRESTを理解するうえでの大切な概念です。

リソースとは、

  • ウェブ上に存在する情報
  • URIによって一意に決まる
  • 複数のURIを持つことがある

一例ですが、ウェブ上に存在する天気情報などがそれにあたります。
架空ので天気に関する情報を、教えてくれるAPIがあるとします。今日が2020/06/08だとします。

https://kakutenki/today
https://kakutenki/20200608

上記の二つのURIに対してGETメソッドでアクセスします。どちらのURIで2020/06/08のお天気情報にアクセスしたとしても、2020/06/08のお天気が帰ってきます。つまり、それぞれのURIがウェブ上に存在する情報に一意にアクセスしています。

ROA

Resource Oriented Architecture の略です。
ROAに関してはこちらの記事が非常に参考になりました。詳細は記事を確認して欲しいのですが、すごく簡単に説明すると、リソースを中心に考えるアーキテクチャです。以下の特徴を持っています。

  • アドレス可能性
    URIによってリソースを一意に特定できる性質のこと

  • ステートレス性
    サーバー側では状態の管理を行わない。Cookie 等によるセッション管理なども行わない。

  • 接続性
    リソースがリンクによって繋がっていること。

  • 統一インタフェース
    リソースに対する操作を限定したインタフェース。RESTにおいてはHTTPメソッドがそれに当たる。

REST の定義

REST は2000年に、Roy T. Fielding さんの博士論文の中で定義されたました。6つの原則を掲げています。

  • クライアント・サーバー
  • ステートレス
  • キャッシュ
  • 統一インタフェース
  • 階層化インタフェース
  • コード・オン・デマンド

REST vs RESTful

REST と RESTful は、しばしば同じものとして扱われている記事を目にしますが、筆者は別物だと考えています。

REST はあくまで設計原則です。名詞です。

RESTful は形容詞です。つまり何かの名詞と組み合わせて使います。よくある組み合わせとして RESTful API を見かけます(これしか知らない...)。つまり、RESTで定義されている設計原則にしたがって構築されたAPIという意味になります。たまに、REST API も見かけますが、これは複合名詞にしているので、相違意味では、REST と RESTful は同義だと言えるかもしれません。

ただ、筆者が留意したいのは、RESTは設計原則であり、RESTfulは設計原則にしたがって作った何かというものです。細かいですが、RESTfulという表現は大切だと思います。よなぜなら世の中のほとんどのRESTっぽいアーキテクチャであり、それぞれが必要に応じて柔軟にアーキテクチャを修正しているからです。

参考

https://qiita.com/aosho235/items/125af74e2eab66c7a816
https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2
https://qiita.com/NagaokaKenichi/items/0f3a55e422d5cc9f1b9c
Webを支える技術

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?