REST API
HTTP メソッドとリソース指向の URL で設計する Web API のアーキテクチャスタイル
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
ステータスコード
ステータスコードを以下にまとめる。
| コード | 意味 | 用途 |
|---|---|---|
| 200 | OK | 成功 |
| 201 | Created | リソース作成成功 |
| 204 | No Content | 削除成功 |
| 400 | Bad Request | リクエストが不正 |
| 401 | Unauthorized | 認証が必要 |
| 403 | Forbidden | 権限がない |
| 404 | Not Found | リソースが存在しない |
| 429 | Too Many Requests | レート制限 |
| 500 | Internal Server Error | サーバーエラー |
GraphQL との比較
GraphQL との主な違いを以下に比較する。
| 観点 | REST | GraphQL |
|---|---|---|
| エンドポイント | リソースごとに複数 | 1 つ (/graphql) |
| データ取得 | 固定レスポンス | クライアントが選択 |
| Over-fetching | 発生する | 発生しない |
| キャッシュ | HTTP キャッシュが使える | 工夫が必要 |
| 学習コスト | 低い | 中程度 |
ページネーション
ページネーションを図で示す。
GET /users?limit=20&cursor=eyJpZCI6IjEyMyJ9
{
"items": [...],
"nextCursor": "eyJpZCI6IjE0MyJ9"
}
カーソルベースのページネーションが DynamoDB と相性が良い。
全体像を把握するには関連書籍も有用。
この記事は役に立ちましたか?
関連用語
API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
OpenAPI
REST API の仕様を YAML/JSON で記述する標準フォーマットで、ドキュメント生成やコード生成に活用される
HTTP ステータスコード
HTTP レスポンスの結果を 3 桁の数値で表す標準コードで、1xx〜5xx の 5 カテゴリに分類される
HTTP/2
HTTP/1.1 の性能限界を解消するために設計された、多重化・ヘッダー圧縮・サーバープッシュを備えたプロトコル
ページネーションとは - API のカーソル方式とオフセット方式の比較
ページネーションは大量データを分割して返す手法。オフセット方式とカーソル方式の違い・パフォーマンス特性・REST/GraphQL での実装パターンを解説
GraphQL
クライアントが必要なデータだけを指定して取得できる API クエリ言語
関連する記事
技術書の読む順番戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで理解の深さと速度を飛躍的に高める方法を解説します。
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。