APIの開発とかを手掛けていて、REST?ステートフルとステートレスってなんだ?
…となったので調べてみました。
ステートフルとステートレスについて
ステートフルとステートレスについては結論からいうと、状態を維持する仕組みをステートフル、状態を維持しない仕組みをステートレスと呼ぶそうです。
クライアントとサーバー間のやりとりにはステートフルとステートレスという仕組みがあり、このやりとりを維持するかしないかが違いになります。
ステートフル | 前回のデータを保存して、データ保存した内容を処理結果に反映される仕組み |
ステートレス | 前回のデータを保存しないで、前回のデータを内容に処理結果に反映させない仕組み |
RESTについて
REpresentational State Transferの略で4つの設計原則があるようです。
- セッションなどの状態管理を行わない。(ステートレス)
- 情報の操作(取得、作成、更新、削除)は全てHTTPメソッド(GET、POST、PUT、DELETE)を利用する。
- すべての情報は汎用的な構文で一意に識別される。(URLやURIなど)
- 情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができる。
RESTではないアプリケーションの例
処理内容 | URL | HTTPメソッド |
---|---|---|
レコード作成 | /create | POST |
レコード取得 | /record/1234 | GET |
レコード削除 | /delete_record/1234 | GET |
レコード編集 | /edit_record/1234 | GET |
RESTなアプリケーションの例
処理内容 | URL | HTTPメソッド |
---|---|---|
レコード作成 | /record | POST |
レコード取得 | /record/1234 | GET |
レコード削除 | /record/1234 | DELETE |
レコード編集 | /record/1234 | PUT |