.NET Core 6最小Web API:如何在Program类中编写API端点及使用Map方法
.NET Core 6 最小Web API 在Program类中定义各类端点的方法
.NET Core 6的最小API无需控制器,直接通过WebApplication实例的MapXXX系列方法即可在Program类中定义各类HTTP请求端点。以下是常见请求类型的具体实现:
1. GET 请求(获取资源)
用于查询单个或批量资源,支持路由参数绑定:
// 定义User模型(需放在Program类外或内部) public class User { public int Id { get; set; } public string Name { get; set; } = string.Empty; } var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 获取所有用户列表 app.MapGet("/api/users", () => { var mockUsers = new List<User> { new User { Id = 1, Name = "张三" }, new User { Id = 2, Name = "李四" } }; return Results.Ok(mockUsers); }); // 根据ID获取单个用户 app.MapGet("/api/users/{id}", (int id) => { var mockUser = new User { Id = id, Name = $"用户{id}" }; return mockUser != null ? Results.Ok(mockUser) : Results.NotFound(); });
2. POST 请求(创建资源)
用于提交新资源,自动绑定请求体中的JSON数据到模型:
app.MapPost("/api/users", (User newUser) => { // 模拟写入数据库逻辑,生成新ID newUser.Id = 3; // 返回201 Created状态码及新资源的访问路径 return Results.Created($"/api/users/{newUser.Id}", newUser); });
3. PUT 请求(更新资源)
用于修改已有资源,需校验路由ID与请求体ID的一致性:
app.MapPut("/api/users/{id}", (int id, User updatedUser) => { if (id != updatedUser.Id) { return Results.BadRequest("路由ID与请求体ID不匹配"); } // 模拟数据库更新逻辑 return Results.Ok(updatedUser); });
4. DELETE 请求(删除资源)
用于移除指定资源,返回对应状态码:
app.MapDelete("/api/users/{id}", (int id) => { // 模拟检查资源是否存在的逻辑 var resourceExists = true; return resourceExists ? Results.NoContent() : Results.NotFound(); });
补充说明
- 依赖注入支持:如果需要使用数据库上下文、日志等服务,可直接在
MapXXX方法的参数中注入:app.MapGet("/api/users", (AppDbContext dbContext) => { return Results.Ok(dbContext.Users.ToList()); }); - Results类:提供了标准HTTP状态码的快捷返回方法,比如
Results.BadRequest()、Results.Unauthorized()等,便于统一响应格式。
内容的提问来源于stack exchange,提问作者md ni
相关产品推荐
相关产品推荐

