api-design-patterns について
RESTful API の設計とレビューに使う原則をまとめたスキルです。リソース設計、エラー処理、セキュリティ、ページネーション、バージョン管理、レスポンス形式、ドキュメントを扱います。
主な機能
- 01リソース命名と HTTP メソッドの規則
- 02エラーレスポンスと検証情報の設計
- 03認証・認可・入力セキュリティの指針
- 04ページネーション・フィルタリング・ソートのパターン
- 05API バージョン管理の指針
- 06OpenAPI ドキュメントの規則
活用シーン
- 01新しい REST API エンドポイントの計画
- 02既存 API 構成のレビュー
- 03ページネーション・絞り込み・並べ替えの設計
- 04OpenAPI または Swagger ドキュメントの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ asyrafhussin/ agent-skills --skill api-design-patternsインストール後、Claude Code で/api-design-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mddoc-changelog.mddoc-examples.mddoc-openapi.mderror-consistent-format.mderror-error-codes.mderror-meaningful-messages.mderror-no-stack-traces.mderror-request-id.mderror-validation-details.mdfilter-query-params.mdpage-consistent-params.mdpage-cursor-based.mdpage-metadata.mdpage-offset-based.mdresp-compression.mdresp-consistent-structure.mdresp-json-conventions.mdresp-partial-responses.mdrest-hateoas.mdrest-http-methods.mdrest-idempotency.mdrest-nested-resources.mdrest-nouns-not-verbs.mdrest-plural-resources.mdrest-resource-actions.md詳細
API 設計パターン
一貫性があり、開発者にとって使いやすい API を構築するための RESTful API 設計原則です。リソース設計、エラー処理、セキュリティ、ページネーション、バージョン管理、レスポンス形式、ドキュメントを網羅する 7 カテゴリー、38 個のルールが含まれています。
メタデータ
- バージョン: 2.0.0
- ルール数: 7 カテゴリーにわたる 38 個のルール
- ライセンス: MIT
適用するタイミング
以下の場合に、これらのガイドラインを参照してください。
- 新しい API エンドポイントを設計するとき
- 既存の API 構造をレビューするとき
- エラー処理とバリデーションを実装するとき
- ページネーション、フィルタリング、ソートを設定するとき
- API のバージョン管理戦略を計画するとき
- API セキュリティ(認証、CORS、レート制限)を設定するとき
- API ドキュメント(OpenAPI/Swagger)を作成するとき
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | リソース設計 | 重大 | rest- |
| 2 | エラー処理 | 重大 | error- |
| 3 | セキュリティ | 重大 | sec- |
| 4 | ページネーションとフィルタリング | 高 | page-、filter-、sort- |
| 5 | バージョン管理 | 高 | ver- |
| 6 | レスポンス形式 | 中 | resp- |
| 7 | ドキュメント | 中 | doc- |
クイックリファレンス
1. リソース設計(重大)
rest-nouns-not-verbs- エンドポイントには動詞ではなく名詞を使用するrest-plural-resources- リソース名には複数形を使用するrest-http-methods- HTTP メソッド(GET、POST、PUT、PATCH、DELETE)を正しく使用するrest-nested-resources- リソースを適切にネストする(最大 2 階層)rest-status-codes- 適切な HTTP ステータスコードを使用するrest-idempotency- 冪等性キーを使用した冪等な操作rest-hateoas- 発見可能性を高めるハイパーメディアリンクrest-resource-actions- CRUD 以外のアクションをサブリソースとして扱う
2. エラー処理(重大)
error-consistent-format- 一貫性のあるエラーレスポンス構造error-meaningful-messages- 役に立ち、対応につながるエラーメッセージerror-validation-details- フィールド単位のバリデーションエラーerror-error-codes- 機械可読なエラーコードerror-no-stack-traces- 本番環境でスタックトレースを絶対に公開しないerror-request-id- デバッグ用にリクエスト ID を含める
3. セキュリティ(重大)
sec-authentication- 適切な認証の実装(OAuth2/JWT)sec-authorization- リソースレベルの権限(RBAC)sec-rate-limiting- レート制限による不正利用の防止sec-input-validation- すべての入力を検証し、サニタイズするsec-cors-config- 許可リストを使用した CORS の設定sec-https-only- すべての通信で HTTPS を強制するsec-sensitive-data- パスワード、トークン、PII を保護する
4. ページネーションとフィルタリング(高)
page-cursor-based- 大規模なデータセットにはカーソルページネーションを使用するpage-offset-based- シンプルなケースにはオフセットページネーションを使用するpage-consistent-params- 一貫性のあるパラメーター名を使用するpage-metadata- レスポンスにページネーションのメタデータを含めるfilter-query-params- クエリパラメーターでフィルタリングするsort-flexible- 降順を示す-プレフィックスを使い、柔軟にソートする
5. バージョン管理(高)
ver-url-path- URL パスでバージョンを指定する(/api/v1/)ver-header-based- Accept ヘッダーでバージョンを指定するver-backward-compatible- 下位互換性を維持するver-deprecation- Sunset ヘッダーを使った非推奨化戦略
6. レスポンス形式(中)
resp-consistent-structure- 一貫性のあるレスポンスエンベロープresp-json-conventions- JSON の命名規則resp-partial-responses- フィールドの選択(スパースフィールドセット)resp-compression- レスポンスの圧縮(gzip/Brotli)
7. ドキュメント(中)
doc-openapi- OpenAPI/Swagger 仕様doc-examples- リクエストとレスポンスの例doc-changelog- API の変更履歴
基本ガイドライン
リソースの命名
# ❌ Verbs in URLs
GET /getUsers
POST /createUser
# ✅ Nouns with HTTP methods
GET /users # List users
POST /users # Create user
GET /users/123 # Get user
PUT /users/123 # Update user (full)
PATCH /users/123 # Update user (partial)
DELETE /users/123 # Delete user
エラーレスポンス形式
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request contains invalid data",
"details": [
{
"field": "email",
"code": "INVALID_FORMAT",
"message": "Please provide a valid email address"
}
],
"request_id": "req_abc123"
}
}
ページネーション
{
"data": [...],
"meta": {
"current_page": 2,
"per_page": 20,
"total_pages": 10,
"total_count": 195
},
"links": {
"first": "/users?page=1&per_page=20",
"prev": "/users?page=1&per_page=20",
"next": "/users?page=3&per_page=20",
"last": "/users?page=10&per_page=20"
}
}
レート制限ヘッダー
HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1640995200
使用方法
詳しい説明については、個々のルールファイルを参照してください。
rules/rest-http-methods.md
rules/error-consistent-format.md
rules/page-cursor-based.md
rules/sec-authentication.md
rules/ver-url-path.md
rules/doc-openapi.md
参考資料
完全版のコンパイル済みドキュメント
すべてのルールを展開した完全なガイドについては、AGENTS.md をご覧ください。
コメント
Markdown 対応