C#的Minimal API是ASP.NET Core框架中推出的轻量级Web API开发模式,它摒弃了传统MVC模式需要的控制器、路由特性等冗余结构,开发者仅通过少量代码就能快速构建出可用的Web接口,非常适合小型项目或者需要快速迭代的接口场景。

Minimal API环境准备
要使用Minimal API,首先需要安装.NET 6及以上版本的SDK,因为Minimal API是从.NET 6开始正式引入的特性。创建项目时可以选择ASP.NET Core空项目模板,也可以手动配置项目文件。
基础的项目文件Program.cs初始内容如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
基础路由定义
Minimal API通过MapGet、MapPost、MapPut、MapDelete等方法来定义不同HTTP请求方式的路由,方法第一个参数是路由模板,第二个参数是处理逻辑的委托。
GET请求路由示例
定义一个获取用户列表的GET接口:
app.MapGet("/users", () =>
{
var users = new[]
{
new { Id = 1, Name = "张三" },
new { Id = 2, Name = "李四" }
};
return users;
});
带参数的路由
如果需要获取路由中的参数,可以直接在委托中定义对应参数:
// 路由模板中的{id}对应委托的id参数
app.MapGet("/users/{id}", (int id) =>
{
return new { Id = id, Name = $"用户{id}" };
});
POST请求与请求体处理
处理POST请求时,通常需要获取请求体中的JSON数据,Minimal API会自动完成JSON反序列化,只需要在委托中定义对应的参数类型即可。
// 定义用户请求模型
public record UserCreateRequest(string Name, int Age);
app.MapPost("/users", (UserCreateRequest request) =>
{
// 模拟保存用户逻辑
var newUser = new { Id = 3, Name = request.Name, Age = request.Age };
return Results.Created($"/users/{newUser.Id}", newUser);
});
常用返回结果处理
Minimal API提供了Results静态类来返回不同的HTTP响应状态,常用的有:
Results.Ok():返回200成功响应Results.NotFound():返回404未找到响应Results.BadRequest():返回400请求错误响应Results.Created():返回201创建成功响应
示例:根据ID查询用户,不存在时返回404:
app.MapGet("/users/{id}", (int id) =>
{
if (id <= 0)
{
return Results.BadRequest("用户ID必须大于0");
}
if (id > 2)
{
return Results.NotFound($"ID为{id}的用户不存在");
}
return Results.Ok(new { Id = id, Name = $"用户{id}" });
});
中间件与依赖注入
Minimal API完全支持ASP.NET Core的中间件和依赖注入机制,可以在builder阶段注册服务,在路由委托中直接使用。
首先注册自定义服务:
// 定义服务接口
public interface IUserService
{
IEnumerable<object> GetAllUsers();
}
// 实现服务
public class UserService : IUserService
{
public IEnumerable<object> GetAllUsers()
{
return new[]
{
new { Id = 1, Name = "张三" },
new { Id = 2, Name = "李四" }
};
}
}
// 注册服务到容器
builder.Services.AddScoped<IUserService, UserService>();
然后在路由中注入使用:
app.MapGet("/users", (IUserService userService) =>
{
return userService.GetAllUsers();
});
完整示例项目代码
以下是一个完整的Minimal API示例,包含基础路由、参数处理、依赖注入、返回状态处理:
using System;
var builder = WebApplication.CreateBuilder(args);
// 注册服务
builder.Services.AddScoped<IUserService, UserService>();
var app = builder.Build();
// 基础GET接口
app.MapGet("/", () => "Minimal API示例项目");
// 获取用户列表接口
app.MapGet("/users", (IUserService userService) =>
{
return userService.GetAllUsers();
});
// 获取单个用户接口
app.MapGet("/users/{id}", (int id) =>
{
if (id <= 0)
{
return Results.BadRequest("用户ID必须大于0");
}
if (id > 2)
{
return Results.NotFound($"ID为{id}的用户不存在");
}
return Results.Ok(new { Id = id, Name = $"用户{id}" });
});
// 创建用户接口
app.MapPost("/users", (UserCreateRequest request) =>
{
var newUser = new { Id = 3, Name = request.Name, Age = request.Age };
return Results.Created($"/users/{newUser.Id}", newUser);
});
app.Run();
// 请求模型
public record UserCreateRequest(string Name, int Age);
// 服务接口
public interface IUserService
{
IEnumerable<object> GetAllUsers();
}
// 服务实现
public class UserService : IUserService
{
public IEnumerable<object> GetAllUsers()
{
return new[]
{
new { Id = 1, Name = "张三" },
new { Id = 2, Name = "李四" }
};
}
}
C#Minimal_APIASP.NET_CoreWeb_API修改时间:2026-06-15 14:33:37