本文へスキップ
BecomeCoder

C#実践コース · 第5章 代表的なSDK · レッスン28

ASP.NET Core Web API入門(ローカル実施)

ローカル実施
スターターをダウンロード(.zip)

導入

これまでは他人の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

進め方

  1. スターター112-webapi/starter.zipを展開し、WebApiLesson.slnを開く
  2. dotnet runで起動し、表示されたURL/swaggerをブラウザで開く
  3. Program.csのTODO(エンドポイント)を埋める
ブラウザで開いたSwagger UIに、自作したGET/POSTエンドポイントが一覧表示され、実行できる様子
Swagger UI:自作したAPIエンドポイントをブラウザから試せる

学ぶこと

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つずつ使っていきます。