REST API

HTTP メソッドとリソース指向の URL で設計する Web API のアーキテクチャスタイル

APIWeb

REST API とは

REST (Representational State Transfer) は、Roy Fielding が 2000 年の博士論文で定義した Web API のアーキテクチャスタイルである。HTTP メソッドとリソース指向の URL でデータを操作する。

HTTP メソッドと CRUD

HTTP メソッドと CRUD を以下にまとめる。

メソッド操作冪等
GET取得GET /users/123
POST作成POST /users
PUT全体更新PUT /users/123
PATCH部分更新PATCH /users/123
DELETE削除DELETE /users/123

URL 設計

URL 設計を図で示す。

✅ リソース指向
GET    /users          ← ユーザー一覧
GET    /users/123      ← ユーザー取得
POST   /users          ← ユーザー作成
PUT    /users/123      ← ユーザー更新
DELETE /users/123      ← ユーザー削除
GET    /users/123/orders ← ユーザーの注文一覧

❌ 動詞ベース
GET /getUser?id=123
POST /createUser
POST /deleteUser

ステータスコード

ステータスコードを以下にまとめる。

コード意味用途
200OK成功
201Createdリソース作成成功
204No Content削除成功
400Bad Requestリクエストが不正
401Unauthorized認証が必要
403Forbidden権限がない
404Not Foundリソースが存在しない
429Too Many Requestsレート制限
500Internal Server Errorサーバーエラー

GraphQL との比較

GraphQL との主な違いを以下に比較する。

観点RESTGraphQL
エンドポイントリソースごとに複数1 つ (/graphql)
データ取得固定レスポンスクライアントが選択
Over-fetching発生する発生しない
キャッシュHTTP キャッシュが使える工夫が必要
学習コスト低い中程度

ページネーション

ページネーションを図で示す。

GET /users?limit=20&cursor=eyJpZCI6IjEyMyJ9

{
  "items": [...],
  "nextCursor": "eyJpZCI6IjE0MyJ9"
}

カーソルベースのページネーションが DynamoDB と相性が良い。

全体像を把握するには関連書籍も有用。

この記事は役に立ちましたか?

関連用語

関連する記事