1. 最小 Web API 返回 JSON 与状态码

最小 Web API 返回 JSON 与状态码 学习卡片

最小 API 的两个端点:对象 JSON 与指定状态码

本例用 WebApplication.CreateBuilder 建立最小宿主,注册两个端点:GET /api/weather 返回一个匿名对象,由框架自动序列化为 JSON;GET /api/status/{code} 读取路由参数并返回指定 HTTP 状态码。运行后分别用浏览器或 curl 访问,观察响应头中的 Content-Type 与状态行。

最小 API 请求处理与响应路径 客户端 浏览器 / curl HTTP GET 路由匹配 MapGet 模板 /api/weather /api/status/{code} 端点 A:返回对象 Results.Ok(new { ... }) 自动 JSON 序列化 端点 B:返回状态码 Results.StatusCode(code) 无响应体 200 OK JSON 体 指定码 空响应体 关键观察点 • 端点 A:响应头 Content-Type: application/json; charset=utf-8,响应体为序列化后的 JSON 对象 • 端点 B:响应状态行中的状态码等于路由参数 code,响应体为空,Content-Length: 0

完整可运行代码

新建一个 ASP.NET Core 空项目,将 Program.cs 替换为以下内容。代码不依赖任何额外 NuGet 包,直接使用最小 API 的 MapGet 与 Results 辅助方法。

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

// 端点 A:返回对象 JSON
app.MapGet("/api/weather", () =>
{
    var forecast = new
    {
        City = "Beijing",
        TemperatureC = 26,
        Summary = "Sunny",
        Date = new DateTime(2025, 6, 1)
    };
    return Results.Ok(forecast);
});

// 端点 B:返回指定 HTTP 状态码
app.MapGet("/api/status/{code:int}", (int code) =>
{
    return Results.StatusCode(code);
});

app.Run();

运行与验证

在项目目录执行 dotnet run,控制台会输出监听地址(例如 http://localhost:5000)。打开另一个终端,用以下命令验证两个端点的行为。

# 端点 A:查看 JSON 响应与 Content-Type
curl -i http://localhost:5000/api/weather

# 端点 B:返回 404
curl -i http://localhost:5000/api/status/404

# 端点 B:返回 201
curl -i http://localhost:5000/api/status/201
验证要点:端点 A 的响应头应包含 Content-Type: application/json; charset=utf-8,响应体为 JSON 对象;端点 B 的响应状态行分别为 HTTP/1.1 404 Not Found 和 HTTP/1.1 201 Created,且响应体为空。若访问 /api/status/abc,由于路由约束 {code:int} 不匹配,框架会返回 404,这属于路由匹配失败而非端点内部逻辑。
常见问题:若 dotnet run 后端口不是 5000,请以控制台实际输出为准;若使用 HTTPS 重定向,curl 可能收到 307,可加 -L 跟随或直接访问 HTTP 地址。端点 B 的 Results.StatusCode 不会写入响应体,因此 Content-Length 为 0,这与返回空字符串的 200 响应不同。