REST APIとは?
一行で言うと
REST APIとは、RESTという設計ルールに従って作られたWeb APIのことです。
つまりRESTはあくまで考え方のことです。
RESTとは?
REST(Representational State Transfer)とは、Webのリソース(情報)に対する一貫したアクセスルールを定義する考え方です。
ざっくり言えば、
「リソースをHTTPを使って扱うための決まりごと」です。
この
>>リソースをHTTPを使って扱うための決まりごと
にはいろんな種類があり、どのような考え方を利用してAPI設計をするかで異なります。
(REST以外にも,SOAP API、Graph QL、 gRPCなどがあります。)
RESTの設計原則(超ざっくりにとどめます)
-
リソースはURIで表現する
例:映画情報 →/movies
-
リソースに対する操作はHTTPメソッドで表す(URIで表そうとしない)
-GET
:取得
-POST
:新規作成
-PUT
orPATCH
:更新
-DELETE
:削除 -
ステートレス
→ サーバーはクライアントの状態を記憶しない。 -
統一インターフェース
→ どのAPIでも同じ操作ルール(GETで取得、POSTで登録など)を守る。
movieリソースのCRUD操作例(正しいREST API)
| URI | HTTP method |
|----------------|-------------|
| /movie | GET |
| /movie | POST |
| /movies/:id | GET |
| /movie/:id | PUT |
| /movie/:id | DELETE |
バッドな例(非RESTful)
以下のようなAPI設計は、RESTの原則に反していて分かりづらく、保守性が低いです。
| URI | HTTP method |
|------------------------|-------------|
| /getAllMovies | POST |
| /createNewMovie | GET |
| /updateMovieData | POST |
| /deleteMovieById | POST |
問題点:
- 操作がHTTPメソッドではなくURIに埋め込まれている
-
GET
で「作成」など、HTTPメソッドの意味を無視している - URIの構造にリソースの概念がない