REST4つの原則の話
「RESTfulなWebサービスの構築」って、ぱっと聞いて理解できる頭じゃなかったので、まとめることにしました。
他の記事を参考にしたり、ChatGPTを使ったりしているので、誤情報もあったりなかったりするかもしれませんが、ご参考までに
アドレス可能性 (Addressability)
Webサービスが提供している情報に対して、一意の識別子を通してアクセスできることを言います。
ここではURIが「一意の識別子」に当たります。
URIとは
「URL」と「URN」の総称で、識別子の種類によって、URLかURNに変わります。
URL
インターネット上のリソースの場所(Location)を示すためのURIの一種。
よく見る「http」や「https」を含む形式で、具体的な場所を示している事が多い
https://www.example.com
URN
リソースに永久的な固有の名前(Name)を提供するURIの一種
永久的な名前を提供するので、場所に依存しない
urn:isbn:0451450523
ステートレス性 (Stateless)
システムがクライアントの前回の状態を覚えておらず、各リクエストが独立している状態を指します。つまり、直前になにをしていても、各々が独立していて自己完結しているので、何度同じリクエストをしても同じ結果が返ってきます。また、「独立している=依存していない」ので、拡張もしやすいのも特徴の一つです
接続性 (Connectability)
情報内部に、他のリソースへのリンクを含めることができることです。
QiitaやYoutubeの概要欄など、関連性を持った別のページに飛ぶことができるリンクを保有できるということがまさに持続性を持っているということになります。
統一インターフェース (Uniform Interface)
情報の操作(取得、作成、更新、削除)が統一されているということです。
リソース側とクライアント側が統一されたインターフェースを持っているので、一貫した操作、アクセスが可能になります
代表的なのはHTTPメソッドのGET, POST, PUT, DELETEになります
RESTfulなサービスで、HTTPメソッドを採用しているなら、どのサービスでもGET,POST,PUT,DELETEをクライアント側での操作で可能ということです
(サービス提供側でDELETEができないようにするなどの制限をかけることはできますが...)
まとめ
RESTfulなサービスとは、REST4つの原則である「アドレス可能性 (Addressability)」、「ステートレス性 (Stateless)」、「接続性 (Connectability)」、「統一インターフェース (Uniform Interface)」で、サービスが提供する情報を一位の識別子を通してアクセスできて、それぞれの処理が独立していて、他のリソースにアクセスできるリンクを保有できて、統一されたインターフェースによって操作ができるサービスのこと!