#リソース指向アーキテクチャ(ROA)とは
リソース指向アーキテクチャ(Resource Oriented Architecture、以下ROA)とは、それ自体を参照するに値するものを「リソース」として定義し、リソースを中心に考えるアーキテクチャのこと。また、ROAはREST APIを実装するうえで問題を解決してくれるアーキテクチャでもある。言い換えるとREST APIはROAの実装ということである。
##ROAの概念
ROAには以下の概念が存在する。
###1.リソース
Web上に存在する情報、データのこと。
ドキュメントやデータベースの行など、それ自体を参照するに値するほどの重要性を持っている。
###2.名前(URI)
リソースの名前とアドレスである。
リソースは少なくとも1つのURIを持っていなければならない。
###3.表現
Webサーバはリソースを特定の言語(英語、日本語等)、フォーマット(XML、JSON等)で送信しなければならない。
こういったリソースの形式をリソースの表現と呼ぶ。
###4.リソース間のリンク(リンクと接続性)
リソースには別のリソースへのリンクを含めることができる。リンクを含めることで別のリソースに接続することができる。
このように、リソースに含まれるリンクをもとに別のリソースに接続可能となる(遷移可能となる)性質のことを「接続性」と呼ぶ。
##ROAの特性
ROAには以下の特性が存在する。
###1.アドレス可能性
URIを通じてリソースを簡単に指し示せる性質のことを「アドレス可能性」と呼ぶ。
###2.ステートレス性
全てのHTTPリクエストが完全に分離している性質のことを「ステートレス性」と呼ぶ。セッション等の状態管理はせず、やり取りされる情報はそれ自体で完結して解釈できること。
###3.リンクと接続性
リソースには別のリソースへのリンクを含めることができる。リンクを含めることで別のリソースに接続することができる。このように、リソースに含まれるリンクをもとに別のリソースに接続可能となる(遷移可能となる)性質のことを「接続性」と呼ぶ。
###4.統一インターフェース
リソースの操作をする時に、全てHTTPメソッドが定義通りに使われることを「統一インターフェース」と呼ぶ。