AspNet6InDepth
1.0.0
ASP.NET 6の概要
ASP.NET 6 の基礎
Program.cs
ファイルの分析IMiddleware
インターフェースを実装することでRequestDelegate
オブジェクトを挿入することによりapp.Use
、 app.Map
、 app.MapWhen
、 app.UseWhen
およびapp.Run
を使用してインライン ミドルウェアを作成するapp.UseStaticFiles();
app.UseCors();
ProblemDetails
応答を返すappsettings.{environment}.json
およびIConfiguration
インターフェイスから構成を読み取ります。IOptions
インターフェイスを使用して、厳密に型指定された C# POCO に構成をバインドするIOptionsSnapshot
またはIOptionsMonitor
インターフェイスを使用して、実行時に厳密に型指定された C# POCO にリロードできるバインド構成HttpContext
、 HttpContext.Request
およびHttpContext.Response
についてRoute
属性を使用して複数のルートをコントローラーにバインドするHttpGetAttribute
、 HttpPostAttribute
、 HttpPutAttribute
、 HttpPatchAttribute
およびHttpDeleteAttribute
FromQuery
: クエリ文字列から値を取得しますFromRoute
: ルートデータから値を取得しますFromForm
: 投稿されたフォームフィールドから値を取得しますFromBody
: リクエスト本文から値を取得しますFromHeader
: HTTP ヘッダーから値を取得しますIActionResult
またはActionResult
を使用して応答を処理するAccept
ヘッダーを使用してコンテンツ ネゴシエーションを処理するAccept
ヘッダーがapplication/xml
に設定されている場合は XML 応答を送信しますAccept
ヘッダーがapplication/json
に設定されている場合は、JSON 応答を送信しますHTTP Patch
タイプのリクエストを処理するCompare
: モデル内の 2 つのプロパティが一致するかどうかを検証します。EmailAddress
: プロパティに電子メール形式があるかどうかを検証します。Phone
: プロパティに電話番号形式があるかどうかを検証します。Range
: プロパティ値が指定された範囲内にあるかどうかを検証します。RegularExpression
: プロパティ値が指定された正規表現と一致するかどうかを検証します。Required
: フィールドが null でないかどうかを検証します。StringLength
: 文字列プロパティ値が指定された長さ制限を超えていないかどうかを検証します。Url
: プロパティが URL 形式であるかどうかを検証します。IHttpClientFactory.CreateClient();
を使用して基本的な IHttpClientFactory を作成します。gzip
アルゴリズムを使用して応答圧縮を追加するAspNetCoreRateLimit
nuget パッケージとメモリ プロバイダーを使用したレート制限。AspNetCoreRateLimit
およびAspNetCoreRateLimit.Redis
nuget パッケージを使用したレート制限。ILogger
拡張メソッドを使用してログを記録するlogger.LogTrace
ログ トレース レベル メッセージlogger.LogDebug
ログのデバッグ レベルのメッセージlogger.LogInformation
ログ情報レベルのメッセージlogger.Warning
ログの警告レベルのメッセージlogger.Error
ログのエラー レベル メッセージlogger.Critical
ログのクリティカル レベルのメッセージAzure AppInsights
SDK を使用してログを記録するIHostedService
インターフェイスを使用してホストされたサービスを実装するBackgroundService
クラスをオーバーライドしてバックグラウンド サービスを実装するSwashbuckle.AspNetCore
nuget をインストールしますswagger.json
ルート レベルから提供するように swagger ルート プレフィックスを変更しますASP.NET 6 API アプリケーションでのデータ アクセス
Micro ORM Dapper と PostgreSQL を使用したデータ アクセス
/api/Persons?page=1&limit=10
/api/Persons?searchAfter=4499b79a-c710-45e4-ba87-083d22c4d6ad_2023-04-17T12:00:25&limit=10
/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
でシングルを取得/api/Persons
を作成する/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
を更新します。/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
を削除していますEF Core 6 ORM と PostgreSQL を使用したデータ アクセス
DbSet
を追加しますDbContext
分析するidempotent
オプションを使用して移行を追加する/api/Employees?page=1&limit=10
/api/Employees?searchAfter=4499b79a-c710-45e4-ba87-083d22c4d6ad_2023-04-17T12:00:25&limit=10
/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
で単一を取得/api/Employees
を作成する/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
を更新します。/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
を削除していますASP.NET 6 API アプリケーションでの応答キャッシュ
IMemoryCache
を使用したメモリ キャッシュの追加StackExchange.Redis
を使用して分散キャッシュを追加するASP.NET 6 API アプリケーションのセキュリティ
認証の追加
Claim
、 ClaimsIdentity
、およびClaimsPrincipal
理解するBCrypt.Net-Next
nuget を使用してプレーン テキスト パスワードをハッシュするSystem.IdentityModel.Tokens.Jwt
を使用して JWT を生成する/api/Account/Register
でユーザーを登録します/api/Account/Login
でユーザーをログインし、アクセス トークンとリフレッシュ トークンの初期セットを生成します。/api/Account/Token
送信されたリフレッシュ トークンを使用してアクセス トークンをリフレッシュします/api/Account/Revoke
でリフレッシュ トークンを取り消します権限の追加
IAuthorizationRequirement
インターフェイスを実装するHandleRequirementAsync
をオーバーライドしてカスタム ポリシー要件を作成しますProgram.cs
にカスタム要件を登録するケーススタディ: Auth0 を使用した JWT 認証とロール認可の追加
ファイルのアップロードとファイルのダウンロードの処理
wwwroot folder
に保存する.xlsx
ファイルを応答にストリーム配信するテスト
単体テスト
xUnit.net
使用して単体テストを追加する[Fact]
と[Theory]
を理解するDispose
メソッドを使用してテスト データをクリーンアップする[InlineData]
を使用してプリミティブ パラメーターを渡します[MemberData]
を使用してプリミティブおよび複雑なパラメータを渡します[ClassData]
使用してプリミティブおよび複雑なパラメーターを渡しますIClassFixture
使用して同じクラスでテスト コンテキストを共有するICollectionFixture
を使用して複数のクラス間でテスト コンテキストを共有するMoq
を使用して依存関係サービスをモックするVerify()
またはVerifyAll()
を使用してモックされたサービスが呼び出されたかどうかを確認します。統合テスト
WebApplicationFactory
を継承してカスタム Web アプリケーション ファクトリを作成するxUnit.net
使用して API の統合テストを作成するgRPC と HTTP2 を使用した同期サービス間通信
メッセージキューを使用した非同期サービス間通信
ASP.NET 6 API アプリケーションのホスティング