これは、事前に構成されたシンプルな ASP.NET Core プロジェクトであり、3 層アーキテクチャに基づいて、Restful API の構築をいち早く開始できるようにすることを目的としています。
その機能の一部を紹介するために、このプロジェクトには、Plantagoo と呼ばれるプロジェクト管理アプリケーションの最小限の架空の実装が付属しています。
私個人としては、ここ数か月間、ASP.NET Core API プロジェクトをゼロから作成する作業を繰り返してきました。テクノロジーは急速に変化し、改善していることが知られていますが、将来的に共有、参照、構築できるように、このプロジェクトを作成して公開する必要があると感じました。
3 層アーキテクチャ、層ごとにクラス ライブラリを使用
DI ベースの非同期サービス、汎用応答オブジェクトを返す
JWT ベースの認証と認可
PBKDF2ベースのハッシュ
ミドルウェアベースのグローバルエラー処理
RESTful API エンドポイント、DTO および HTTP ステータス コードを返す
オブジェクトのリストを返す API エンドポイントのフィルタリング、ページング、ソートの実装
APIエンドポイントのバージョン管理の実装
Entity Framework POCO エンティティを介したコアベースのデータ アクセス
AutoMapper ベースのオブジェクト間のマッピングとデータベース クエリの最適化
環境ベースの「appsettings.json」ファイル、シークレット、環境変数を介したデータベース接続文字列と JWT パラメータのセキュリティを重視した構成可能性
専用データベースのセットアップ、シード、破棄を含む、xUnit ベースの統合テスト
このプロジェクトをそのまま立ち上げて実行するには、次の手順に従ってください。
.NET Core 3.1+ SDK
IDE (できれば Visual Studio または Visual Studio Code)
MySQLサーバー8.0.20以降
このリポジトリのクローンを作成します
ルート ディレクトリで、次のコマンドを実行して必要なパッケージを復元します。
dotnet restore
Plantagoo.API プロジェクト内のappsettings.{environment}.jsonファイルを開いて、必要に応じて次の接続文字列をカスタマイズします (資格情報については手順 7 を参照)。
server=localhost;Port=3306;database=apiSkeletonDb
開発目的の場合は、以下を実行してシークレット ストレージを有効にします (環境変数の操作に慣れている場合は、手順 7 に早送りしてください)。
dotnet user-secrets init
Windows を使用している場合は、 %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.jsonファイルに移動して開きます。
Linux/macOS を使用している場合は、 ~/.microsoft/usersecrets/<user_secrets_id>/secrets.jsonファイルに移動して開きます。
この Secrets.json ファイル内に次の行を追加して JWT パラメータを設定し、ユーザー名とパスワードを追加してデータベース接続文字列を拡張します。
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
コードファーストアプローチでデータベースを作成する場合は、次のコマンドを実行します (現在のディレクトリがPlantagoo.Dataであることを確認してください)。
dotnet ef migrations add InitialCreate
に続く:
dotnet ef database update
次に、以下を実行してソリューションを構築します。
dotnet build
完了したら、次のコマンドを実行してアプリケーションを起動します。
dotnet run
ブラウザで https://localhost:5001/swagger/index.html を起動して、API の Swagger ドキュメントを表示します。
.NETコア3.1
ASP.NETコア3.1
エンティティ フレームワーク コア 3.1
オートマッパー
スワッシュバックル
xユニット