Minimal API 解决了什么

过去搭一个 Web API,要建项目、加控制器、写路由特性,样板一大堆。Minimal API 把它压到「一行 MapGet 就能跑起来」,特别适合小服务、微服务和快速验证。它不是淘汰控制器,而是给轻量场景一条更短的路。

小服务、微服务首选 Minimal API;复杂分组与绑定仍可平滑迁回控制器。
为什么转向云原生
  • 启动快镜像小、冷启动快,适合弹性伸缩。
  • 配置外置环境变量管理一切环境差异。
  • 可观测自带健康检查与指标输出。
云原生 API 配图:中央发光云朵轮廓,下方伸出多条光路连接到一排集装箱形状的容器方块
云端服务与一排容器,靠光路彼此连接。

从一行代码到一个服务

新建空项目后,Program.cs 里几乎只有一句。WebApplication.Create 出来的 app 直接映射端点,跑起来就是一个能接收 HTTP 请求的服务。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "hi from minimal api");
app.Run();

路由、参数与依赖注入

端点可以从路由拿参数、从服务注入依赖。Minimal API 用 lambda 直接声明这些,绑定源由参数类型推断。需要校验时,配合 FluentValidation 即可。

app.MapGet("/users/{id:int}", async (int id, IUserService svc) =>
    await svc.GetAsync(id));

装进容器

云原生的下一步是容器。用多阶段 Dockerfile:先在 SDK 镜像里发布,再把发布产物拷进更小的运行时镜像,镜像体积能压到一两百兆。AOT 发布还能再小、启动更快。

云原生:配置、健康与可观测

云原生服务要能被平台「管理」。配置走环境变量与配置中心;用 MapHealthChecks 暴露就绪与存活探针;用 OpenTelemetry 输出日志、指标与链路。平台据此决定要不要把流量切给它、要不要重启。

三件标配
  • 配置环境变量 + 配置中心。
  • 健康就绪 / 存活探针。
  • 观测OpenTelemetry 日志指标链路。