使用 ASP.NET Core 6 探索简约 Web API - Scott Hanselman

作者:API传播员 · 2025-12-10 · 阅读时间:5分钟
本文探索基于 ASP.NET Core 6 的简约 Web API 开发,涵盖 .NET 6 新语言特性如顶级语句和记录类型,以及如何构建从简单 'Hello World' 到集成 OpenAPI 和 Entity Framework 的复杂应用,帮助开发者高效创建简洁、可维护的 Web API。

使用 ASP.NET Core 6 探索简约 Web API

在 2016 年,我曾撰写过关于最小 Web Web API 开发。


.NET 6 的新语言特性与模板改进

.NET 6 引入了许多新的语言特性和模板改进,使开发变得更加简洁和高效。以下是新模板中采用的一些关键语言特性:

  • 顶级语句:无需显式定义 Main 方法,代码更加简洁。
  • 异步主方法:支持异步操作的主方法。
  • 全局 using 指令:通过 SDK 默认值简化命名空间的引用。
  • 文件范围的命名空间:减少嵌套,提升代码可读性。
  • 目标类型的新表达式:简化对象初始化。
  • 可为空的引用类型:增强代码的可维护性和安全性。

这些特性不仅提升了开发体验,还为未来的模板设计奠定了基础。


创建一个简单的 "Hello World" Web API

以下是一个返回 text/plain 的最小化 "Hello World" 示例:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}app.MapGet("/", () => "Hello World!");app.Run();

这个示例展示了如何快速创建一个简单的 Web API。通过顶级语句和简化的配置,开发者可以更专注于业务逻辑。


添加控制器支持的 Web 应用

如果需要构建更复杂的 Web 应用,可以通过以下代码添加控制器支持:

var builder = WebApplication.CreateBuilder(args);

// 添加服务到容器
builder.Services.AddControllersWithViews();var app = builder.Build();// 配置 HTTP 请求管道
if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");app.Run();

通过这种方式,您可以轻松构建支持 MVC 模式的 Web 应用。


集成 OpenAPI 支持

通过引入 Swashbuckle.AspNetCore 包,可以为 Web API 添加 OpenAPI 支持。以下是具体实现:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}app.UseSwagger();
app.MapGet("/", () => "Hello World!");
app.UseSwaggerUI();app.Run();

运行后访问 https://localhost:5001/swagger,即可看到 Swagger UI 提供的 API 文档和测试工具:

Swagger UI 示例


使用 Entity Framework 实现数据访问

通过结合 Entity Framework,可以轻松实现对数据库的访问。以下是一个返回员工列表的示例:

app.UseEndpoints(endpoints =>
{
    endpoints.MapGet("/api/employees", ([FromServices] AppDbContext db) =>
    {
        return db.Employees.ToList();
    });
});

这个示例展示了如何以 JSON 格式返回实体数据,代码简洁且易于维护。


使用记录类型简化数据模型

.NET 6 引入了记录类型(Record),可以大幅减少样板代码。以下是一个简单的示例:

var app = WebApplication.Create(args);
app.MapGet("/person", () => new Person("Scott", "Hanselman"));
await app.RunAsync();

public record Person(string FirstName, string LastName);

访问 /person 路径时,返回的 JSON 数据如下:

{
    "firstName": "Scott",
    "lastName": "Hanselman"
}

记录类型不仅简化了数据模型的定义,还提升了代码的可读性。


更多资源

如果您想深入了解最小 Web API 的实现,可以参考以下资源:


总结

.NET 6 的最小 Web API 提供了一种高效、简洁的开发方式。通过新语言特性和模板改进,开发者可以快速构建功能强大的 Web 应用,同时保持代码的简洁性和可维护性。无论是简单的 "Hello World" 示例,还是结合 OpenAPI 和数据库的复杂应用,.NET 6 都为开发者提供了强大的支持。

希望本文能为您提供灵感,帮助您更好地探索 .NET 6 的新特性。祝您开发愉快!

原文链接: https://www.hanselman.com/blog/exploring-a-minimal-web-api-with-aspnet-core-6