本文へスキップ
BecomeCoder

C#実践コース · 第11章 モダンC#実務 · レッスン65

Minimal API 入門

ローカル実施

導入

「自分がAPIを提供する側」に回るとき、.NETの Minimal API を使うと、ごく数行でHTTPエンドポイントを公開できます。ホスト(Webサーバー)が必要なため、ここではコード例で読みます。

説明

flowchart LR
    C["クライアント"] -->|GET /hello| APP["WebApplication"]
    APP -->|ルート登録 MapGet| H["ハンドラ(ラムダ)"]
    H -->|オブジェクトを返す| J["自動でJSON化して応答"]
    style APP fill:#e1f5fe

サンプル

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// ルートとハンドラを対応づける
app.MapGet("/hello", () => "Hello, API!");

// オブジェクトを返すと自動でJSONになる
app.MapGet("/users/{id}", (int id) => new { Id = id, Name = "Taro" });

app.MapPost("/orders", (Order order) =>
{
    // order は本文のJSONから自動で作られる
    return Results.Created($"/orders/{order.Id}", order);
});

app.Run();

record Order(int Id, string Item);
  • MapGet / MapPost などでルート(URL)とハンドラを対応づける
  • ハンドラがオブジェクトを返すと、フレームワークが自動でJSONにする(HTTP通信の章の「逆」)
  • パス・クエリ・本文の値は引数として自動で受け取れる(モデルバインディング)
  • Results.Ok / Results.NotFound / Results.Created などでステータスを明示できる

演習

手元で dotnet new web を作り、MapGet("/time", () => DateTime.Now) を足してブラウザで開いてみましょう。返した値がそのままJSONになることを確認できます。

まとめ

  • Minimal APIは数行でHTTPエンドポイントを公開できる
  • 戻り値のオブジェクトは自動でJSON化される
  • パス・クエリ・本文は引数に自動バインドされる

次回: 常駐して働く Worker Service です(読み物)。