考虑以下两段代码。两者都将数据返回到 Web API Get 调用。两者都返回一个项目列表。两者都有效。第一个取自 Visual Studio 入门 Blazor Wasm 应用程序。第二个来自在线教程。tblTitles 是远程数据库中的一个表,通过 _dataContext 访问。
应该使用其中哪一个,为什么?或者也许一个更适合特定情况?
[HttpGet]
//First method:
public IEnumerable<TitlesTable> Get()
{
var titles = _dataContext.tblTitles.ToList();
return titles;
}
//Second method:
public async Task<IActionResult> Get()
{
var titles = await _dataContext.tblTitles.ToListAsync();
return Ok(titles);
}
Run Code Online (Sandbox Code Playgroud)
您的片段之间有 2 个差异,应单独考虑。
大多数操作都会执行一些 I/O,而异步/等待模式更适合处理这些操作,它将允许您的服务器处理更多的并发请求。
直接返回数据是要求 ASP.NET 将其包装在响应中。这很简单,但是一旦您尝试添加验证,就会出现问题。任何错误都将作为状态 500(内部服务器错误)返回,设计良好的 API 在适用时应该能够返回 400(错误请求)或 404(未找到)。
因此,总而言之, async Task<IActionResult>
或async Task<ActionResult<T>>
是控制器操作的最佳模式。
第一个取自 Visual Studio 入门 Blazor Wasm 应用程序。
不,不是。演示控制器生成一些天气数据,但不执行任何 I/O。
这使得所选择的简短形式可以接受,但认为它具有“演示”质量水平。
归档时间: |
|
查看次数: |
6033 次 |
最近记录: |