在 Blazor 应用程序中从 WEB API 返回数据
Returning data from a WEB API in a Blazor App
考虑以下两段代码。两个 return 数据到一个 Web API Get 调用。两者都是 return 项列表。两者都有效。第一个取自 Visual Studio starter Blazor Wasm App。第二个来自在线教程。 tblTitles 是远程数据库中的 table,通过 _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);
}
我相信您注意到了不同之处 available controller return types。从该文档页面:
ASP.NET Core offers the following options for web API controller
action return types:
- Specific type
IActionResult
ActionResult<T>
该页面提供了何时使用它们的注意事项。
两者是一样的。默认情况下,如果未指定属性,asp .net 会将操作方法视为 HttpGet。
现在既 return 一个列表,但你也应该考虑 return 一个特定的状态代码作为你的 api 的一部分。通过这种方式,客户端应用程序可以了解请求发生了什么
恕我直言,我会为你的 api
采用这种方法
[HttpGet]
public async Task<IActionResult> Get()
{
var titles = await _dataContext.tblTitles.ToListAsync();
return Ok(titles);
}
您可以 return 特定类型而不是 IActionResult ,它是通用表示,但只有在需要为您生成文档时才会看到它的优势 api 使用打开 api 标准。像 swashbuckle 这样的包通过反射检查 return 类型以在文档中生成正确的输出模型。希望这有帮助
您的代码段之间有 2 个不同之处,应分别考虑。
1。同步或异步
大多数操作都会执行一些操作 I/O,而 async/await 模式更适合处理这些操作,它将允许您的服务器处理更多的并发请求。
2。纯数据或 IActionResult
直接返回数据是要求 ASP.NET 为您将其包装在响应中。这很容易,但是一旦您尝试添加验证,它就会出现问题。任何错误都将 return 编辑为状态 500(内部服务器错误),设计良好的 API 应该能够 return 400(错误请求)或 404(未找到)(如果适用)。
因此,总而言之,async Task<IActionResult>
或 async Task<ActionResult<T>>
是控制器操作的最佳模式。
The first one was taken from Visual Studio starter Blazor Wasm App.
不,不是。演示控制器生成一些天气数据但不执行任何操作 I/O.
这使得所选的短格式可以接受,但认为它具有 'demo' 质量水平。
考虑以下两段代码。两个 return 数据到一个 Web API Get 调用。两者都是 return 项列表。两者都有效。第一个取自 Visual Studio starter Blazor Wasm App。第二个来自在线教程。 tblTitles 是远程数据库中的 table,通过 _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);
}
我相信您注意到了不同之处 available controller return types。从该文档页面:
ASP.NET Core offers the following options for web API controller action return types:
- Specific type
IActionResult
ActionResult<T>
该页面提供了何时使用它们的注意事项。
两者是一样的。默认情况下,如果未指定属性,asp .net 会将操作方法视为 HttpGet。 现在既 return 一个列表,但你也应该考虑 return 一个特定的状态代码作为你的 api 的一部分。通过这种方式,客户端应用程序可以了解请求发生了什么
恕我直言,我会为你的 api
采用这种方法[HttpGet]
public async Task<IActionResult> Get()
{
var titles = await _dataContext.tblTitles.ToListAsync();
return Ok(titles);
}
您可以 return 特定类型而不是 IActionResult ,它是通用表示,但只有在需要为您生成文档时才会看到它的优势 api 使用打开 api 标准。像 swashbuckle 这样的包通过反射检查 return 类型以在文档中生成正确的输出模型。希望这有帮助
您的代码段之间有 2 个不同之处,应分别考虑。
1。同步或异步
大多数操作都会执行一些操作 I/O,而 async/await 模式更适合处理这些操作,它将允许您的服务器处理更多的并发请求。
2。纯数据或 IActionResult
直接返回数据是要求 ASP.NET 为您将其包装在响应中。这很容易,但是一旦您尝试添加验证,它就会出现问题。任何错误都将 return 编辑为状态 500(内部服务器错误),设计良好的 API 应该能够 return 400(错误请求)或 404(未找到)(如果适用)。
因此,总而言之,async Task<IActionResult>
或 async Task<ActionResult<T>>
是控制器操作的最佳模式。
The first one was taken from Visual Studio starter Blazor Wasm App.
不,不是。演示控制器生成一些天气数据但不执行任何操作 I/O.
这使得所选的短格式可以接受,但认为它具有 'demo' 质量水平。