从MVC项目中分离API

时间:2017-08-23 08:39:32

标签: .net asp.net-mvc asp.net-core architecture

我正在尝试进入ASP.NET Core。很多例子都有前端和后端使用相同的项目。我想做的是拥有一个API项目和一个前端项目。我更喜欢这个单独的解决方案,因为如果需要,将来我会更容易添加移动组件。

我的问题是:假设我有项目,一个Web API(核心)和一个MVC(核心)我会有重复的控制器吗?

例如,在API项目中,我将拥有以下控制器

  1. LoginController
  2. MembersController
  3. ShopController
  4. 这意味着在我的MVC项目中,我将拥有相同的控制器,并且在控制器中我将对我的API项目中的相应控制器进行REST调用吗?将每个请求通过MVC控制器,然后再通过API控制器,似乎是多余和低效的吗?

    如何保护通话?我是否会在成功登录API项目后发布JWT以保护对API层的后续调用?

1 个答案:

答案 0 :(得分:3)

杰克,

我可以通过这种方式看到,控制器名称(mvc和api)具有不同的用途。 MVC控制器将呈现UI以与客户端工作一起使用,其中API控制器将处理数据。我没有看到任何冗余。

我建议保留API& MVC分开(不要担心名字)。如果API分离,那么您也可以使用基于移动的UI,只需使用api的

从MVC,您可以从客户端或服务器端调用这些API。这实际上将解耦MVC& API。

在API的项目中,有登录方法(验证和生成令牌);此令牌可以通过登录页面在MVC或移动设备中使用。然后使用令牌调用其他剩余的API方法(承载令牌样式)。

拆分数据访问&在项目中单独公开其方法,使用Web API将其公开。你永远不知道在非MVC应用程序中是否需要它们。