向一个Route
添加两个Action
属性并检查用户正在调用哪个URI并根据它返回结果,这是一个很好的编码实践吗?
以下是一个例子:
[Route("/api/DoThis")]
[Route("/DoThis")]
public IActionResult DoThis()
{
if (HttpContext.Current.Request.Url.AbsolutePath.StartsWith("/api"))
{
return SomeJSON();
}
else
{
return View();
}
}
这是实现这一目标的最佳方法吗?还是有更直接的东西?
答案 0 :(得分:0)
您正在做的事情的一个很好的替代品可能是存储库模式,因此您可以在存储库中实现业务逻辑,此时您的操作只需要调用正确的存储库方法来获取数据。
您可以按照评论中的建议专门做内容协商。我希望将API和“MVC”操作保持分离的原因是,您可以很好地分离关注点和经验。我同意评论,您需要传递给视图的数据将从API要求。当你在更大的团队中工作时,特别是开发人员友好地分离这些东西,更少的东西要记录。 :-)