はじめに
Build 2021 のセッション
.NET 6 deep dive; what's new and what's coming | OD485
www.youtube.com
などで紹介された Minimal Web API について、セッション内でコードの一部は画面で見ることができましたが、公式のサンプルコードの紹介はありませんでした。
具体的などのようなコードになるかを確認するために、.NET6 RC1 でサンプルコードを作成しました。
github.com
.NET 6 の新機能の情報は以下をご覧ください。
hiro128.hatenablog.jp
プロジェクト
MinimalWebAPISample
Minimal Web API のサンプルです。
Startup.cs も、Controllers も不要で、Program.cs のみで動く
Program.cs
using System; using System.Linq; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; string[] Summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; var rng = new Random(); var app = WebApplication.Create(args); app.MapGet("/", () => "Hello World!"); app.MapGet("/plant", () => new { Name = "cactus" }); app.MapGet("/weatherforecast", () => Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)] }).ToArray() ); await app.RunAsync(); public class WeatherForecast { public DateTime Date { get; set; } public int TemperatureC { get; set; } public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); public string Summary { get; set; } }
MVCWebAPISample
従来からある ASP.NET Core Web API のサンプルです。
長いのでコードは省略しますが、Startup.cs 、Controllers、Program.cs とお作法が多いです。
両者は同じ結果を返す API になっていますので、MVCWebAPISample と比べて Minimal Web API でどれだけコードが少なくなるかを確認できます。
注意点
Minimal Web API のコードは、セッションの内容と .NET6 RC1 SDK を調査した結果から独自に作成したコードですので、正式リリースの .NET6 では動作しなかったり、違うコードになる可能性があります。
System Requirements
以下の Windows, に対応した Visual Studio 2022 Preview 最新版と .NET 6 SDK RC1 をインストールしてください。Visual Studio 2019 では動作しません。なお、Windows では Visual Studio 2022 Preview と Visual Studio 2019 はサイドバイサイドで動作し、共存可能です。
APIのエンドポイント(Minimal Web API, ASP.NET Core Web API 共通)
エンドポイント | メソッド | レスポンス | |
---|---|---|---|
/ | Get | "Hello World!"文字列を固定で返却 | |
/plant | Get | レスポンス:植物名(サボテン)のオブジェクト(JSON)を固定で返却 | |
/weatherforecast | Get | ランダムな天候を表すオブジェクトのリスト(JSON)を返却 |
まとめ
Minimal Web API のコードは Program.cs ファイルにすべてが記述できており、特に行数が少なくなるようなことはしておりませんが、30行以内に収まっています。
ASP.NET Core Web API のコードと比較すると直感的にわかりやすく、簡単な Mock API やシンプルな API を作成するシナリオに利用できそうです。