#dotnetconf
Minimal API と DI の良い組み合わせ
2022/11/25 .NET Conf Recap Fukuoka
Yuta Matsumura
Slide 2
Slide 2 text
#dotnetconf
松村 優大 (Yuta Matsumura)
Chief Technical Architect (C#, PHP, Azure)
Microsoft MVP (Developer Technologies)
#fukuten #devblogradio の中の人
@tsubakimoto_s
Currently working for
Slide 3
Slide 3 text
#dotnetconf
本日お話しすること
1. ASP.NET Core Minimal API とは
2. これまでの Web API 開発との違い
3. これから始める Minimal API
4. Minimal API x Dependency Injection
5. .NET 7 の Minimal API の新機能
Slide 4
Slide 4 text
#dotnetconf
ASP.NET Core Minimal API とは
• ASP.NET Core 6.0 で登場した機能
• 依存関係が最小限の Web API を作成
• ルーティングで構成するエンドポイント定義
Slide 5
Slide 5 text
#dotnetconf
ASP.NET Core Minimal API とは
• ASP.NET Core 6.0 で登場した機能
• 依存関係が最小限の Web API を作成
• ルーティングで構成するエンドポイント定義
Slide 6
Slide 6 text
#dotnetconf
最小限の依存関係
前提 (.NET 6.0 ~ / ASP.NET Core 6.0 ~)
最小化されたホスティングモデル
• Startup.cs が Program.cs に統合された
• トップレベルステートメント
• global using により using の記述量が減る
Slide 7
Slide 7 text
#dotnetconf
#dotnetconf
Program.cs
Slide 8
Slide 8 text
#dotnetconf
#dotnetconf
$ dotnet run
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:¥Users¥yuta¥...¥MinimalConsole
Slide 9
Slide 9 text
#dotnetconf
ルーティングで構成するエンドポイント定義
HTTP メソッド エンドポイント定義
HTTP GET MapGet
HTTP POST MapPost
HTTP PUT MapPut
HTTP DELETE MapDelete
など
https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/routing
Slide 10
Slide 10 text
#dotnetconf
#dotnetconf
Program.cs
Slide 11
Slide 11 text
#dotnetconf
これまでの Web API 開発との違い
• MVC の構成に合わせて実装する必要あり
• Controller クラス (ControllerBase クラス 要継承)
• ApiController 属性 : API 用のコントローラーである目印
• Route 属性 : ルーティング構成
リソース数が増えると必要な Controller も増える
https://learn.microsoft.com/en-us/aspnet/core/tutorials/min-web-api#differences-between-minimal-apis-and-apis-with-controllers