RESTとは?
RESTとは、Webアプリケーションを開発する際の設計思想のこと。
クライアント・サーバ間の通信が効率的で一貫性のあるものとなることを目的とする。
Webアプリケーションでは、サーバ側がDBなどから取得した情報をリソースとしてWeb上に用意するが、そのリソースに対してどのように操作するかについてのガイドラインを定めたものがRESTである。
代表的なRESTのガイドライン
■ URIでリソースを識別する
Web上に配置するリソースには、一意に識別できるURIを割り当てる。
Webにおける、データの住所みたいなもの。
例えば /users/1 は「IDが1のユーザ」を表す。
■ HTTPメソッドでリソースを操作する
URIで特定したリソースに対する操作をHTTPメソッドで使い分ける。
HTTPメソッド | 用途 |
---|---|
GET | 取得 |
POST | 新規登録 |
PUT | 更新 |
DELETE | 削除 |
■ レスポンスボディに適切なデータ形式を使用
サーバから取得するデータはレスポンスボディに記述されるが、このレスポンスボディのデータ形式は、視認性の高いJSONやXML形式を使用する。
レスポンスボディのデータ形式はクライアント側で指定できる。
(JSONの場合は、HTTPリクエストの「Acceptヘッダ」に「application/json」と指定する)
■ リクエストボディに適切なデータ形式を使用
リクエストのデータ形式も、クライアント側で決めることができる。
(JSONの場合は、HTTPリクエストの「Content-Typeヘッダ」に「application/json」と指定する)
■ ステータスコードの活用
リクエストに対する処置の結果を表すステータスコードを活用する。
ステータスコード | 意味 |
---|---|
200(OK) | 処理が正常に行われた |
400(Bad Request) | リクエストに不備がある |
403(Forbidden) | 認証されたが権限不足 |
404(Not Found) | リソースが存在しない |
405(Method Not Allowed) | 対応していないメソッドを使用 |
500(Internal Server Error) | サーバ側でエラー発生 |
■ サーバ側をステートレスにする
サーバ側は各リクエストを独立したものとして扱い、過去のやり取りを記憶しない。
つまり、セッションを使用しない。
アプリケーションの状態はクライアント側(JavaScript)で管理する。
【補足】サーバ側をステートレスにする理由
スケールアウトに対応するため。
サーバがステートフルだと、サーバマシンの台数を増やした際に困難が生じる。
リクエストをステートの存在するサーバへ振り分けたり、サーバ間でステートの共有をしたりする必要が出てくる。