mcpField
R
rest-api-django

rest-api-django

github.com/mindrally開発287717 回インストール3 週間前に更新
リポジトリ

rest-api-django について

rest-api-djangoは、Django REST FrameworkでREST APIを構築する開発者向けのガイドです。プロジェクト構成、データ処理、認証、性能、統一的なエラーレスポンスを扱います。

主な機能

  1. 01DRF APIビューとREST設計
  2. 02再利用可能なDjangoアプリ構成
  3. 03ORMクエリとトランザクションの指針
  4. 04シリアライザー検証の指針
  5. 05JWTとエンドポイント権限
  6. 06ページネーション、キャッシュ、エラー処理

活用シーン

  1. 01Django REST API構成の計画
  2. 02シリアライザーと権限の確認
  3. 03N+1データベースクエリの削減
  4. 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 ステータスコードを使用します
  • 一貫したエラーレスポンスの構造を返します
  • デバッグのため、構造化ログを適用します
  • 内部エラーをクライアントに決して公開しません

コメント