RESTとは
RESTとは、ネットワークシステムの設計の考え方の一つです。
以下の4つの原則を持ち合わせています。
- リソースのアドレス可能性
- 統一インタフェース
- 表現指向とハイパーメディア
- ステートレスな通信
リソースのアドレス可能性
リソースとは、クライアントが要求する情報やデータのことです。
たとえば、URIはリソースです。
このリソースには動詞を含めず、名詞のみを使用します。
つまり、「何を」「どうするか」の、何の部分のみを指定するということです。
そしてこのリソースは、全てURIで表現される一意、つまり特定できるURIを持っています。
統一インタフェース
RESTでは、リソースに対しての操作が統一して決められています。
HTTPメソッドを使用して、リソースをどのように操作するのか、動詞の部分を指定します。
HTTPメソッドの一覧はこちら
基本的に多く使用されるのは上から4つです。
メソッド | 意味 |
---|---|
GET | リソースの取得 |
POST | リソースの作成、追加など |
PUT | リソースの更新、作成 |
DELETE | リソースの削除 |
HEAD | リソースのヘッダ(メタデータ)の取得 |
OPTIONS | リソースがサポートしているメソッドの取得 |
TRACE | プロキシ動作の確認 |
CONNECT | プロキシ動作のトンネル接続への変更 |
表現指向とハイパーメディア
RESTでは、レスポンス(サーバーから返ってくる返事)に関連する別のリソースのリンクURIを含むことができます。
そのリンクを辿ることで、関連するリソースを取得できるので、知らないリンクにも飛ぶことができます。
ステートレスな通信
RESTでは、サーバーがセッション情報を保持しません。
そのため、すべての情報をクライアントからサーバーに送る必要があります。
ステートレスのわかりやすい例は、こちらを参照してください。
ステートレスとは
メリット
クライアントが増えると、対応するサーバーが異なることになります。
そのときに、サーバー側で情報を保持できていないという状況を避けるために、ステートレスな通信を使用します。
デメリット
送信するデータ量が多くなるため、パフォーマンスが低下します。
また、認証がある場合DBアクセスが増えるため、パフォーマンスが低下します。
そして、通信エラー時にうまくレスポンスが受け取れなかった場合でも、リクエストはすでに送信されており、もう一度リクエストを送ると二重にリクエストを送ったことになります。
一方、ステートフルの場合は、リクエストを受け付けたことを覚えているので二重にリクエストが送られません。
さいごに
HTTPとかRESTってかなり難しいので、『Webを支える技術』を読んだりアウトプットして理解することをおすすめします。