对网页应用程序和Web API使用相同的“Action”

时间:2017-11-25 00:12:51

标签: c# asp.net asp.net-mvc asp.net-core

向一个Route添加两个Action属性并检查用户正在调用哪个URI并根据它返回结果,这是一个很好的编码实践吗?

以下是一个例子:

[Route("/api/DoThis")]
[Route("/DoThis")]
public IActionResult DoThis()
{
if (HttpContext.Current.Request.Url.AbsolutePath.StartsWith("/api"))
    {
        return SomeJSON();
    }
    else
    {
        return View();
    }
}

这是实现这一目标的最佳方法吗?还是有更直接的东西?

1 个答案:

答案 0 :(得分:0)

您正在做的事情的一个很好的替代品可能是存储库模式,因此您可以在存储库中实现业务逻辑,此时您的操作只需要调用正确的存储库方法来获取数据。

您可以按照评论中的建议专门做内容协商。我希望将API和“MVC”操作保持分离的原因是,您可以很好地分离关注点和经验。我同意评论,您需要传递给视图的数据将从API要求。当你在更大的团队中工作时,特别是开发人员友好地分离这些东西,更少的东西要记录。 :-)