rest-api-design について
REST APIを設計する開発者向けのガイドです。リソース名、HTTPメソッド、ステータスコード、レスポンス構造、クエリパラメーターに加え、バージョン管理、ページネーション、OpenAPI/Swaggerの文書化も扱います。
主な機能
- 01名詞と階層を使ったリソース命名
- 02操作に応じたHTTPメソッドの選択
- 03適切なステータスコードの選択
- 04レスポンス構造とページネーション
- 05フィルタリング、ソート、項目選択
- 06APIの文書化とバージョン管理
活用シーン
- 01リソースパスとエンドポイント操作の設計
- 02APIの成功レスポンスとエラーの標準化
- 03コレクションへのページネーションとクエリ機能の追加
- 04APIのバージョン管理と文書の準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ secondsky/ claude-skills --skill rest-api-designインストール後、Claude Code で/rest-api-designを入力して読み込まれたか確認します。
詳細
REST API の設計
適切な規約と開発者体験を備えた RESTful API を設計します。
リソースの命名
# Good - nouns, plural, hierarchical
GET /api/users
GET /api/users/123
GET /api/users/123/orders
POST /api/users
PATCH /api/users/123
DELETE /api/users/123
# Bad - verbs, actions in URL
GET /api/getUsers
POST /api/createUser
POST /api/users/123/delete
HTTP メソッド
| メソッド | 目的 | 冪等性 |
|---|---|---|
| GET | リソースの読み取り | はい |
| POST | リソースの作成 | いいえ |
| PUT | リソースの置き換え | はい |
| PATCH | 部分的な更新 | はい |
| DELETE | リソースの削除 | はい |
ステータスコード
| コード | 意味 | 用途 |
|---|---|---|
| 200 | OK | GET、PATCH の成功 |
| 201 | 作成済み | POST の成功 |
| 204 | コンテンツなし | DELETE の成功 |
| 400 | 不正なリクエスト | バリデーションエラー |
| 401 | 認証されていない | 認証情報がない |
| 403 | 禁止 | 権限が不十分 |
| 404 | 見つからない | リソースが存在しない |
| 429 | リクエストが多すぎる | レート制限中 |
レスポンス形式
{
"data": {
"id": "123",
"type": "user",
"attributes": {
"name": "John",
"email": "[email protected]"
}
},
"meta": {
"requestId": "req_abc123"
}
}
コレクションのレスポンス
{
"data": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"totalPages": 8
},
"links": {
"self": "/api/users?page=1",
"next": "/api/users?page=2"
}
}
クエリパラメーター
GET /api/products?category=electronics # Filtering
GET /api/products?sort=-price,name # Sorting
GET /api/products?page=2&limit=20 # Pagination
GET /api/products?fields=id,name,price # Field selection
ベストプラクティス
- リソースには動詞ではなく名詞を使用します
- URL パス(
/api/v1/)で API をバージョン管理します - 適切なステータスコードを返します
- コレクションにはページネーションを含めます
- OpenAPI/Swagger でドキュメントを作成します
コメント
Markdown 対応