MinimalApis.Extensions 使用教程
项目介绍
MinimalApis.Extensions 是一个为 ASP.NET Core Minimal APIs 提供扩展和辅助功能的库。该项目旨在简化开发过程,提供了一系列的过滤器、绑定和结果类型,以增强 Minimal APIs 的功能。通过使用这些扩展,开发者可以更高效地构建和维护 API 项目。
项目快速启动
安装 NuGet 包
首先,将 MinimalApis.Extensions 包添加到你的 ASP.NET Core 项目中:
dotnet add package MinimalApis.Extensions
配置项目
在 Program.cs
文件中,添加以下代码以启用增强的端点元数据:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsMetadataProviderApiExplorer(); // 仅适用于 .NET 6.0 项目
builder.Services.AddSwaggerGen();
var app = builder.Build();
// 配置中间件和路由
app.MapGet("/", () => "Hello World!");
app.Run();
使用扩展功能
更新你的 Minimal API 以使用库中的过滤器、绑定和结果类型:
app.MapPut("/todos/{id}", async Task<Results<NotFound, NoContent>> (int id, Todo todo, TodoDb db) =>
{
var existingTodo = await db.Todos.FindAsync(id);
if (existingTodo is null)
{
return Results.NotFound();
}
existingTodo.Title = todo.Title;
existingTodo.IsCompleted = todo.IsCompleted;
await db.SaveChangesAsync();
return Results.NoContent();
});
应用案例和最佳实践
案例一:使用过滤器进行验证
MinimalApis.Extensions 提供了验证过滤器,可以在执行 API 方法之前进行数据验证:
app.MapPost("/todos", async Task<Results<BadRequest, Created<Todo>>> (Todo todo, TodoDb db) =>
{
if (string.IsNullOrEmpty(todo.Title))
{
return Results.BadRequest("Title is required");
}
db.Todos.Add(todo);
await db.SaveChangesAsync();
return Results.Created($"/todos/{todo.Id}", todo);
})
.AddEndpointFilter<ValidationFilter<Todo>>();
最佳实践
- 使用过滤器进行输入验证:通过使用验证过滤器,可以在执行 API 方法之前确保输入数据的正确性。
- 利用结果类型:使用库提供的结果类型(如
Results<NotFound, NoContent>
)可以使代码更简洁和易读。 - 集成 Swagger:通过集成 Swagger,可以方便地生成 API 文档,提高开发效率。
典型生态项目
Dapper 和 SQLite
MinimalApis.Extensions 可以与 Dapper 和 SQLite 结合使用,提供轻量级的数据存储解决方案:
builder.Services.AddSingleton<TodoDb>(sp => new TodoDb(new SqliteConnection("Data Source=todos.db")));
其他相关项目
- Swashbuckle:用于生成 Swagger 文档,与 Minimal APIs 结合使用可以提供详细的 API 文档。
- Serilog:用于日志记录,可以与 Minimal APIs 集成,提供详细的日志信息。
通过结合这些生态项目,可以进一步增强 Minimal APIs 的功能和可维护性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考