为了账号安全,请及时绑定邮箱和手机立即绑定

在页面控制器中使用API​​控制器

在页面控制器中使用API​​控制器

C#
MMMHUHU 2023-09-09 17:16:45
我正在开始学习 asp.net core,并且在理解一些基本模式方面遇到问题。我可以在 PageController 中使用 ApiController 吗?例如//Home controllerpublic async Task<IActionResult> Index(){    var artists = await _artistController.GetAll();    var t = artists.GetValue();    var indexModel = new Models.Pages.IndexModel    {        Artists = artists.GetValue() //Extension method    };    return View(indexModel);}//ArtistRestController[HttpGet]public async Task<ActionResult<IEnumerable<Artist>>> GetAll(){    try    {        return Ok(await _repository.GetAll());    }    catch (Exception ex)    {        _logger.LogError(ex.Message);        return BadRequest(ex.Message);    }}它可以工作,但是设计上可以吗?也许我应该直接调用_repository.GetAll()而不使用其他控制器?
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

首先,您应该避免在一个控制器中使用另一个控制器。对于Controller来说,它用于处理来自客户端的http请求。即使它是一个类,但将其用作一个类是不合理的。

其次,组合起来ApiController会使PageController你的应用程序不稳定并且耦合性太强。如果您稍后更改任何内容ArtistRestController.GetAll都会HomeController损坏。而且,对于您当前的代码,如果 中存在一些异常PageController,您的ApiController代码将会失败。

您应该注入repository来查询数据。


查看完整回答
反对 回复 2023-09-09
  • 1 回答
  • 0 关注
  • 51 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信