Results
这是一个静态类,内部所有方法全部静态。返回值全部 IResult
record Todo(string Title, string Content);
app.MapGet("todos", ()=>{
return Results.Ok([
new Todo("购物" , "买醋、酱油"),
new Todo("麻将" , "和王老太太、李老头、张老头打麻将")
]);
});
TypedResults
TypedResults类是Results类的类型化等效类。
record Todo(string Title, string Content);
app.MapGet("todos", GetAllTodosAsync);
app.MapGet("todos/{id}", GetTodoByIdAsync);
static async Task<Ok<List<Todo>>> GetAllTodosAsync(AppDbContext db)
{
var todos = await db.Todos.ToListAsync();
return TypedResults.Ok(todos);
}
static async Task<Results<Ok<Todo>, NotFound>> GetTodoByIdAsync(AppDbContext db, int id)
{
return await db.Todos.FindAsync(id) is Todo todo ?
TypedResults.Ok(todo) :
TypedResults.NotFound();
}
总结
对于类型敏感如:测试、OpenAPI用途时 TypedResults 一定是最优,而且返回值一定采用Results<> (不要怕麻烦,你都使用类型系统了)。