Minimal API 解决了什么
过去搭一个 Web API,要建项目、加控制器、写路由特性,样板一大堆。Minimal API 把它压到「一行 MapGet 就能跑起来」,特别适合小服务、微服务和快速验证。它不是淘汰控制器,而是给轻量场景一条更短的路。
小服务、微服务首选 Minimal 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 日志指标链路。
最小 API 还是控制器
没有绝对优劣。端点少、团队小、追求启动快,用 Minimal API;需要复杂模型绑定、版本管理、大量筛选的大型 API,控制器的约定与生态更顺手。两者能在同一项目共存。
小结与延伸阅读
Minimal API 是 .NET 面向云原生给出的短路径:少样板、快启动、易容器化。配合健康探针与可观测,它就是现代微服务的标准形态。
- .NET 新特性读《.NET 8 新特性与应用开发》。
- 架构解耦读《.NET 依赖注入与模块化架构实战》。
- 容器细节读《后端开发》频道的容器化专题。