導入
これまでは他人のAPIを呼ぶ側でした。今度は自分がAPIを提供する側に回ります。使うのは.NETのWebフレームワークASP.NET Core。数行のC#でHTTPエンドポイントを公開できるMinimal APIで全体像を体験します。
図解
sequenceDiagram
participant B as ブラウザ / Swagger
participant K as ASP.NET Core(Kestrel)
participant H as ハンドラ(あなたが書くラムダ)
B->>K: GET /users/1
K->>H: ルーティングで振り分け
H-->>K: ユーザーデータ(自動でJSON化)
K-->>B: 200 OK + JSON
進め方
- スターター
112-webapi/starter.zipを展開し、WebApiLesson.slnを開く dotnet runで起動し、表示されたURL+/swaggerをブラウザで開くProgram.csのTODO(エンドポイント)を埋める
学ぶこと
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// エンドポイント: URL とラムダ(ハンドラ)を対応づける
app.MapGet("/hello", () => "こんにちは、API!");
// パラメータを受け取り、オブジェクトを返すと自動でJSONになる
app.MapGet("/users/{id}", (int id) => new { Id = id, Name = $"User{id}" });
// POST: 本文(JSON)を受け取る
app.MapPost("/users", (User user) => Results.Created($"/users/{user.Id}", user));
app.Run();
record User(int Id, string Name);
app.MapGet/MapPost/MapPut/MapDeleteでURLとハンドラを対応づける(Minimal API)- ハンドラがオブジェクトを返すと、フレームワークが自動でJSONにする(逆)
Results.Createdなど、適切なステータスコードを返すヘルパーがある- DIコンテナに登録したサービス(DIP/パターン)をハンドラで受け取れる
期待される動作
GET /hello → "こんにちは、API!"
GET /users/1 → {"id":1,"name":"User1"}
まとめ
- ASP.NET CoreのMinimal APIでHTTPエンドポイントを公開できる
- 戻り値のオブジェクトは自動でJSON化される
- 「APIを呼ぶ側」から「作る側」への到達点
テンプレート構成(教材制作用メモ)
112-webapi/
├── starter.zip # ASP.NET Core Minimal API / Swagger設定済み / Program.cs(TODO入り)
└── solution/Program.cs
次章: 実務で必ず出会う「代表的なNuGetパッケージ」を1つずつ使っていきます。