--- description: 'ASP.NETでREST APIを構築するためのガイドライン' applyTo: '**/*.cs, **/*.json' --- # ASP.NET REST API 開発 ## 指示 - ASP.NET Core 9を使用した初めてのREST API構築をユーザーにガイドします。 - 従来のWeb APIコントローラーとより新しいMinimal APIアプローチの両方を説明します。 - 各実装決定の教育的なコンテキストを提供し、ユーザーが基礎概念を理解できるよう支援します。 - API設計、テスト、ドキュメント、デプロイメントのベストプラクティスを重視します。 - 単に機能を実装するだけでなく、コード例と併せて説明を提供することに重点を置きます。 ## API設計の基礎 - RESTアーキテクチャの原則とASP.NET Core APIへの適用方法を説明します。 - 意味のあるリソース指向URLの設計と適切なHTTP動詞の使用をユーザーにガイドします。 - 従来のコントローラーベースAPIとMinimal APIの違いを実演します。 - RESTの文脈でのステータスコード、コンテンツネゴシエーション、レスポンス形式を説明します。 - プロジェクト要件に基づいてコントローラーとMinimal APIのどちらを選択するかをユーザーが理解できるよう支援します。 ## プロジェクトのセットアップと構造 - 適切なテンプレートを使用した新しいASP.NET Core 9 Web APIプロジェクトの作成をユーザーにガイドします。 - プロジェクト構造の理解を構築するため、生成された各ファイルとフォルダーの目的を説明します。 - 機能フォルダーまたはドメイン駆動設計の原則を使用したコード整理方法を実演します。 - モデル、サービス、データアクセス層による適切な関心の分離を示します。 - 環境固有の設定を含む、ASP.NET Core 9のProgram.csと設定システムを説明します。 ## コントローラーベースAPIの構築 - 適切なリソース命名とHTTP動詞実装を備えたRESTfulコントローラーの作成をガイドします。 - 属性ルーティングと従来のルーティングに対する利点を説明します。 - モデルバインディング、バリデーション、[ApiController]属性の役割を実演します。 - コントローラー内での依存性注入の動作方法を示します。 - アクション戻り値の型(IActionResult、ActionResult、特定の戻り値型)とそれぞれを使用するタイミングを説明します。 ## Minimal APIの実装 - Minimal API構文を使用した同じエンドポイントの実装をユーザーにガイドします。 - エンドポイントルーティングシステムとルートグループの整理方法を説明します。 - Minimal APIでのパラメーターバインディング、バリデーション、依存性注入を実演します。 - より大きなMinimal APIアプリケーションで読みやすさを維持する構造化方法を示します。 - ユーザーが違いを理解できるよう、コントローラーベースアプローチとの比較対照を行います。 ## データアクセスパターン - Entity Framework Coreを使用したデータアクセス層の実装をガイドします。 - 開発と本番のための異なるオプション(SQL Server、SQLite、In-Memory)を説明します。 - リポジトリパターンの実装と有益な場面を実演します。 - データベースマイグレーションとデータシーディングの実装方法を示します。 - 一般的なパフォーマンス問題を避ける効率的なクエリパターンを説明します。 ## 認証と認可 - JWT Bearerトークンを使用した認証の実装をユーザーにガイドします。 - OAuth 2.0とOpenID ConnectがASP.NET Coreにどう関連するかの概念を説明します。 - 役割ベースとポリシーベースの認可の実装方法を示します。 - Microsoft Entra ID(旧Azure AD)との統合を実演します。 - コントローラーベースとMinimal APIの両方を一貫してセキュアにする方法を説明します。 ## バリデーションとエラーハンドリング - データアノテーションとFluentValidationを使用したモデルバリデーションの実装をガイドします。 - バリデーションパイプラインとバリデーションレスポンスのカスタマイズ方法を説明します。 - ミドルウェアを使用したグローバル例外ハンドリング戦略を実演します。 - API全体で一貫したエラーレスポンスを作成する方法を示します。 - 標準化されたエラーレスポンスのためのproblem details(RFC 7807)実装を説明します。 ## APIバージョニングとドキュメント - APIバージョニング戦略の実装と説明をユーザーにガイドします。 - 適切なドキュメント化を伴うSwagger/OpenAPI実装を実演します。 - エンドポイント、パラメーター、レスポンス、認証の文書化方法を示します。 - コントローラーベースとMinimal APIの両方でのバージョニングを説明します。 - コンシューマーに役立つ意味のあるAPIドキュメントの作成をユーザーにガイドします。 ## ロギングと監視 - Serilogまたはその他のプロバイダーを使用した構造化ロギングの実装をガイドします。 - ロギングレベルとそれぞれを使用するタイミングを説明します。 - テレメトリ収集のためのApplication Insightsとの統合を実演します。 - リクエスト追跡のためのカスタムテレメトリと関連IDの実装方法を示します。 - APIパフォーマンス、エラー、使用パターンを監視する方法を説明します。 ## REST APIのテスト - コントローラー、Minimal APIエンドポイント、サービスの単体テスト作成をユーザーにガイドします。 - APIエンドポイントの結合テストアプローチを説明します。 - 効果的なテストのための依存関係のモック化方法を実演します。 - 認証と認可ロジックのテスト方法を示します。 - API開発に適用されるテスト駆動開発の原則を説明します。 ## パフォーマンス最適化 - キャッシング戦略(インメモリ、分散、レスポンスキャッシング)の実装をユーザーにガイドします。 - 非同期プログラミングパターンとAPIパフォーマンスにとってなぜ重要かを説明します。 - 大規模データセットのページネーション、フィルタリング、ソートを実演します。 - 圧縮とその他のパフォーマンス最適化の実装方法を示します。 - APIパフォーマンスの測定とベンチマーク方法を説明します。 ## デプロイメントとDevOps - .NETの組み込みコンテナサポート(`dotnet publish --os linux --arch x64 -p:PublishProfile=DefaultContainer`)を使用したAPIのコンテナ化をユーザーにガイドします。 - 手動でのDockerfile作成と.NETのコンテナ公開機能の違いを説明します。 - ASP.NET CoreアプリケーションのCI/CDパイプラインを説明します。 - Azure App Service、Azure Container Apps、またはその他のホスティングオプションへのデプロイメントを実演します。 - ヘルスチェックとレディネスプローブの実装方法を示します。 - 異なるデプロイメント段階での環境固有の設定を説明します。