個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Minimal Web API のサンプルコードを作ってみました。

はじめに

Build 2021 のセッション
.NET 6 deep dive; what's new and what's coming | OD485
 
www.youtube.com

 
などで紹介された Minimal Web API について、セッション内でコードの一部は画面で見ることができましたが、公式のサンプルコードの紹介はありませんでした。
 
具体的などのようなコードになるかを確認するために、.NET6 RC1 でサンプルコードを作成しました。
github.com

 
 

プロジェクト

MinimalWebAPISample

Minimal Web API のサンプルです。
f:id:hiro128:20210921234213p:plain
 
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 のサンプルです。
f:id:hiro128:20210921234233p:plain
 
長いのでコードは省略しますが、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 PreviewVisual Studio 2019 はサイドバイサイドで動作し、共存可能です。
 

APIのエンドポイント(Minimal Web API, ASP.NET Core Web API 共通)

エンドポイント メソッド レスポンス
/ Get "Hello World!"文字列を固定で返却 f:id:hiro128:20210921235422p:plain
/plant Get レスポンス:植物名(サボテン)のオブジェクト(JSON)を固定で返却 f:id:hiro128:20210921235436p:plain
/weatherforecast Get ランダムな天候を表すオブジェクトのリスト(JSON)を返却 f:id:hiro128:20210921235447p:plain

 
 

まとめ

Minimal Web API のコードは Program.cs ファイルにすべてが記述できており、特に行数が少なくなるようなことはしておりませんが、30行以内に収まっています。
 
ASP.NET Core Web API のコードと比較すると直感的にわかりやすく、簡単な Mock API やシンプルな API を作成するシナリオに利用できそうです。