一覺醒來,發現微軟帶來了.NET7 Preview4的更新,本次更新關于MiniAPI的還不少,難以掩飾的喜悅心情,促使我盡快把這個消息分享給大家,那下來我們看一下一共帶來了哪些關于MiniAPI的更新:
返回值帶來了TypedResults,這樣進一步地豐富了返回值的多樣性:
app.MapGet("/todos/{id}", async IResult (int id, TodoDb db)
{return await db.Todos.FindAsync(id) is Todo todo? TypedResults.Ok(todo): TypedResults.NotFound();
});
同時也帶來了多個多個返回值:
app.MapGet("/todos/{id}", async Results<Ok<Todo>, NotFound> (int id, TodoDb db)
{return await db.Todos.FindAsync(id) is Todo todo? TypedResults.Ok(todo): TypedResults.NotFound();
});
OpenAPI的改進:
在《.NET6之MiniAPI(十八):OpenAPI swagger》我們說過,MiniAPI對Swagger的支持還不完美,相信這次,會帶來一定的提升:
描述和參數:
app.MapGet("/todos/{id}", (int id) => ...).WithOpenApi(operation => {operation.Summary = "Retrieve a Todo given its ID";operation.Parameters[0].AllowEmptyValue = false;});
返回值:
app.MapGet("/todos", async (TodoDb db)
{return Results.Ok(await db.Todos.ToArrayAsync());
})
.Produces<Todo[]>();
以及對多返回值的展示。
關于更詳細的Demo,會在后續一些篇幅中顯現。