バックエンドAPIデザインで学ぶべき10のトピック
概要¶
バックエンドエンジニアが API 設計で習得すべき 10 のトピックをリスト化。
詳細¶
0. REST API with Versioning¶
1. Pagination(ページネーション)¶
# Offset-based(シンプルだが大規模では遅い)
GET /posts?page=3&limit=20
# Cursor-based(推奨:大量データでも安定)
GET /posts?after=cursor_abc&limit=20
2. Filtering & Sorting¶
3. Idempotent Endpoints(冪等性)¶
# PUT, DELETE は冪等(同じリクエストを何度送っても結果が変わらない)
PUT /users/123 → 何度呼んでも同じ状態になる ✓
POST /orders → 呼ぶたびに新しい注文が作られる ✗
# 冪等な POST を作るには Idempotency-Key ヘッダを使う
POST /payments
Idempotency-Key: uuid-xxxx ← 同じキーの2回目以降は前回の結果を返す
4. OpenAPI Spec(API ドキュメント)¶
YAML/JSON でエンドポイントを定義 → Swagger UI で自動ドキュメント生成・クライアントコード自動生成。
5. API Gateway¶
認証・レートリミット・ルーティングを集約する。AWS API Gateway, Kong, nginx など。
6. Rate Limiting per User¶
# レスポンスヘッダで残量を通知
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1699200000
# 超過時
HTTP/1.1 429 Too Many Requests
Retry-After: 60
7. Request Validation¶
入力値は必ずバリデーション。型チェック・必須フィールド・範囲チェックをビジネスロジックの手前で弾く。
8. Error Standardisation(エラーフォーマット統一)¶
{
"status": 422,
"code": "VALIDATION_ERROR",
"message": "Email is required",
"details": [
{ "field": "email", "message": "required" }
]
}
9. Metrics & Tracing¶
- メトリクス: リクエスト数・エラーレート・P99 レスポンスタイム
- トレーシング:
trace_idをリクエスト全体で伝搬(OpenTelemetry)
なぜ重要か / いつ使うか¶
- 新しい API エンドポイントを設計するときの確認リストとして
- コードレビューで API 品質を評価するとき
- 面接で「良い API 設計とは?」と聞かれたとき