【问题标题】:Separating APIs from MVC project从 MVC 项目中分离 API
【发布时间】:2018-01-31 17:59:27
【问题描述】:

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

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

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

  1. 登录控制器
  2. 成员控制器
  3. 商店控制器

这是否意味着在我的 MVC 项目中,我将拥有相同的控制器,并且在控制器中我将对我的 API 项目中的相应控制器进行 REST 调用?让每个请求都经过 MVC 控制器,然后再到 API 控制器,是否显得多余且效率低下?

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

【问题讨论】:

  • 为什么你的 MVC 视图不能直接从 javascript 调用 REST JSON 端点?如果您将 API 保留在同一个项目中,则更容易避免跨源问题、从 MVC 控制器到 API 控制器的重复隧道请求,并且很可能您可以将视图保留为纯 html 并通过调用 Json 端点创建整个 Web 应用程序。除非您要达到百万用户并且需要快速的可扩展性,否则将 API 与 MVC 分离的方法是没有用的。并非每个应用程序都必须划分为太多组件,您必须评估预算、目标受众和增长计划。
  • 嗨,Akash,感谢您的建议。如果我需要在调用我的 API 项目的 MVC 应用程序之上有一个移动应用程序怎么办。只有 1 个 MVC 项目仍然可行吗?
  • 是的,您可以从移动设备调用所有 API 调用,即使它是同一个 MVC 项目的一部分。

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


【解决方案1】:

杰克,

我可以通过这种方式看到,控制器名称(mvc 和 api)相同但用途不同。 MVC 控制器将渲染 UI 以使用客户端的东西,而 API 控制器将使用数据。我没有看到任何冗余。

我建议将 API 和 MVC 分开保存(不用担心名称)。如果 API 分开,那么您也可以拥有基于移动的 UI,只需使用 api 的

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多