rest-api-django について
rest-api-djangoは、Django REST FrameworkでREST APIを構築する開発者向けのガイドです。プロジェクト構成、データ処理、認証、性能、統一的なエラーレスポンスを扱います。
主な機能
- 01DRF APIビューとREST設計
- 02再利用可能なDjangoアプリ構成
- 03ORMクエリとトランザクションの指針
- 04シリアライザー検証の指針
- 05JWTとエンドポイント権限
- 06ページネーション、キャッシュ、エラー処理
活用シーン
- 01Django REST API構成の計画
- 02シリアライザーと権限の確認
- 03N+1データベースクエリの削減
- 04APIエラーレスポンスの統一
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill rest-api-djangoインストール後、Claude Code で/rest-api-djangoを入力して読み込まれたか確認します。
詳細
Django による REST API 開発
スケーラブルな API を構築するための Django REST Framework のエキスパートです。
基本原則
- 可能な限り Django の組み込み機能を使用します
- PEP 8 に準拠し、読みやすさを優先します
- 小文字とアンダースコアを使った、わかりやすい名前を付けます
- 再利用性を高めるため、Django アプリを使ってプロジェクトを構成します
- すべての設計上の判断で、スケーラビリティを考慮します
プロジェクト構成
アプリケーション構成
app_name/
migrations/ # Database migrations
admin.py # Admin configuration
models.py # Data models
managers.py # Custom model managers
signals.py # Django signals
tasks.py # Celery tasks
API 構成
api/
v1/
urls.py # URL routing
serializers.py # DRF serializers
views.py # API views
permissions.py # Custom permissions
filters.py # Query filters
開発ガイドライン
ビューと API 設計
- DRF の APIView を使ったクラスベースのビューを使用します
- エンドポイントの設計では RESTful の原則に従います
- ビジネスロジックはビューではなくモデルに記述します
- 一貫したレスポンス形式を維持します
モデルとデータベース
- すべてのデータベース操作に Django ORM を活用します
select_related()とprefetch_related()を使用して N+1 クエリを防ぎます- 頻繁にクエリされるフィールドに適切なインデックスを設定します
- 重要な処理には
transaction.atomic()を使用します
シリアライザーとバリデーション
- すべてのデータ変換に DRF シリアライザーを使用します
- 複雑なバリデーションにはカスタムバリデーターを実装します
- ネストされたリレーションシップを適切に処理します
- シリアライザーの役割を絞り、組み合わせやすくします
認証と認可
- JWT 認証には
djangorestframework_simplejwtを使用します - エンドポイントごとにきめ細かな権限を設定します
- セッションベースの認証では CSRF 保護を確実に行います
- 最小権限の原則を適用します
パフォーマンスの最適化
- Eager Loading により N+1 クエリを防ぎます
- データベース接続プーリングを実装します
- キャッシュには Redis または Memcached を使用します
- リストエンドポイントに標準化されたページネーションを適用します
エラー処理
{
"success": False,
"message": "Validation failed",
"errors": {
"field_name": ["Error message"]
},
"error_code": "VALIDATION_ERROR"
}
- 適切な HTTP ステータスコードを使用します
- 一貫したエラーレスポンスの構造を返します
- デバッグのため、構造化ログを適用します
- 内部エラーをクライアントに決して公開しません
コメント
Markdown 対応