【发布时间】:2016-10-17 03:06:09
【问题描述】:
我不知道我的 google 技能是在下降还是什么,但我似乎不知道如何使用本地 api。这可能最好用示例代码来解释...
所以我有一个简单的 api
public class FooApiController : Controller
{
public IActionResult GetFoo(int id)
{
if (id == 0)
return BadRequest();
var data = ... do db access
return Ok(data);
}
}
还有一个视图控制器
public class FooController : Controller
{
public IActionResult Foo()
{
var api = new FooApiController();
var data = api.GetFoo(1);
ViewBag.Data = data;
return View();
}
}
所以在上面的视图控制器中,我调用 api 来获取所需的数据。然而,由于 api 控制器返回一个 IActionResult,ViewBad.Data 最终成为一个 IActionResult 对象。那么如何更改上面的内容以检查 api 调用的 StatusCode,如果需要处理错误,如果不需要...将数据放入 ViewBag,而不是整个结果对象。
我发现的每个示例似乎都让视图控制器返回一个视图,然后使用 ajax 调用来获取数据。虽然我理解并且可以轻松地做到这一点,但我不喜欢在不需要时对服务器进行 2 次往返的想法。
【问题讨论】:
-
我明白不想再做一次往返,但为什么不正确使用 api 用来进行 db 调用的服务,然后在视图控制器中使用该服务来进行相同的 db 调用。
-
@Woot 我知道它可能更干净,我想它似乎是多余的。所以我们谈论的是一个返回实际数据对象的服务,一个返回结果对象(保存数据)的 api 控制器,以及一个返回视图(带有数据)的视图控制器。似乎有一种更有效的方法。
标签: asp.net asp.net-mvc asp.net-core actionresult asp.net-apicontroller