文档
C# 入门篇:ASP.NET Core Web API 实战
背景
ASP.NET Core 是微软开源的跨平台 Web 框架,在 TechEmpower 基准测试中常年 Top 10。本教程带你构建一个完整的图书管理 Web API。
核心概念
1. 中间件管道
请求依次经过每个中间件,构成管道(Pipeline)。内置中间件:异常处理、静态文件、路由、认证、CORS。
var app = builder.Build();
app.UseExceptionHandler("/error");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
2. 依赖注入(DI)
.NET 内置 IoC 容器。注册服务后,通过构造函数自动注入。
// 注册(Program.cs)
builder.Services.AddScoped<IBookService, BookService>();
builder.Services.AddDbContext<AppDbContext>(...);
// 注入(Controller)
public class BooksController : ControllerBase
{
private readonly IBookService _service;
public BooksController(IBookService service) => _service = service;
}
3. 配置系统
支持 appsettings.json、环境变量、命令行参数,自动合并。
// appsettings.json
{
"ConnectionStrings": {
"Default": "Data Source=app.db"
}
}
// 读取
var connStr = builder.Configuration.GetConnectionString("Default");
分步操作
第一步:创建项目
dotnet new webapi -n BookApi
cd BookApi
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
第二步:定义模型与 DbContext
// Models/Book.cs
public class Book
{
public int Id { get; set; }
public string Title { get; set; } = "";
public string Author { get; set; } = "";
public decimal Price { get; set; }
}
// Data/AppDbContext.cs
public class AppDbContext : DbContext
{
public DbSet<Book> Books => Set<Book>();
public AppDbContext(DbContextOptions<AppDbContext> opts) : base(opts) {}
}
第三步:创建 Service 层
public interface IBookService
{
Task<List<Book>> GetAllAsync();
Task<Book?> GetByIdAsync(int id);
Task<Book> CreateAsync(Book book);
Task<bool> UpdateAsync(int id, Book book);
Task<bool> DeleteAsync(int id);
}
第四步:编写 Controller
利用 [ApiController] 属性自动处理模型验证错误。
第五步:数据库迁移
dotnet ef migrations add InitialCreate
dotnet ef database update
思考题
AddScoped、AddSingleton、AddTransient三种生命周期有什么区别?- 中间件顺序为什么重要?如果
UseAuthentication放在UseAuthorization之后会怎样? - Entity Framework Core 的
AsNoTracking()什么场景使用?