You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:40:50