当前位置: 首页 > 知识库问答 >
问题:

单独项目中MVC解决方案中的Web API

钱凌
2023-03-14

我正在创建一个新的MVC4项目,研究使我相信现在通过web API框架而不是控制器操作更好地实现从javascript到服务器端的通信。我对此的理解是否正确?

我假定我可以在web API和MVC控制器之间共享我的所有属性等,所以从表面上看,这对我来说似乎并不是一个巨大的变化。

当我设置应用程序时,我喜欢将组件拆分到项目中。我的计划是有一个MVC项目和一个web API项目。但我遇到了一些问题。例如,我已经结束了这样的2个应用程序,单独的路由设置等。

所以我的问题是,在MVC应用程序中,web API框架是应该放在同一个项目中,还是应该将web API分离到自己的项目中并解决这些问题?

共有3个答案

隆兴修
2023-03-14

null

null

对于mvc应用程序的JavaScript/jQuery api调用,我希望保持简单,因此我在mvc应用程序中包含了一个web api。我不打算在javascript api调用中使用基于令牌的身份验证,因为嘿,它在同一个应用程序中。我可以只在API端点上使用 属性,当用户没有登录时,他将不会获得数据。

此外,在处理购物车时,如果您想在会话中存储用户的购物车(在未登录的情况下),那么如果您通过javascript代码添加/删除产品,那么您也需要在API中具有此功能。这将使您的API肯定是有状态的,但也将降低您的MVC-API中的复杂性。

龙繁
2023-03-14

IMO,安全和部署应该驱动您的决定。例如,如果您的MVC应用程序使用表单身份验证,但您对API使用基本身份验证(与SSL一起使用)感兴趣,那么单独的项目将使您的生活变得更容易。如果您希望在www.example.com上托管您的站点,但将API托管为API.example.com(vs.www.example.com/API),那么单独的项目将使您的生活更容易。如果您将您的项目分开并相应地将其子域化,并且您打算从您的MVC应用程序中利用您自己的API,那么您将必须解决如何处理客户端对API调用的相同起源策略问题。常见的解决方案是利用jsonp或CORS(如果可以的话,最好是这样)。

null

邵展
2023-03-14

null

Web API和MVC使用的许多概念,尽管乍一看是相似的,但实际上并不兼容。例如,Web API属性是 ,MVC属性是 -它们是不可互换的。

这同样适用于许多其他概念--模型绑定(完全不同的机制),路由(Web API使用HTTPRoutes而不是路由,尽管它们都在相同的底层RouteTable上操作),依赖关系解析器(不兼容)等等--尽管表面上相似,但实际上非常不同。而且,Web API没有区域的概念。

null

null

如果您要为您的在线服务构建一个合适的API(可能由外部客户或各种设备使用),例如为您的移动应用程序提供燃料,那么我只会将Web API分离到一个单独的项目中。

 类似资料:
  • 本文向大家介绍Vue项目中跨域问题解决方案,包括了Vue项目中跨域问题解决方案的使用技巧和注意事项,需要的朋友参考一下 方法 后台更改header 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) Jquery jsonp 后台更改header 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) 打开config

  • 问题内容: 我有一个ASP.NET MVC 5 Web项目,并且我有一个基于MsTest的单元测试项目,该项目使用Selenium进行一些自动化的“浏览器”测试。 当前,我必须运行Web项目(在本地IIS Express中),然后针对该项目运行测试,但这有各种限制。例如,我只能“运行”测试,而不能“调试”它们。显然,这与我的持续集成流程并不合适。 没有办法让测试启动网站实例吗?(我知道ASP.NE

  • 问题内容: 我最近一直在研究Python中的Euler项目问题​​。我对Python相当陌生,但作为一名程序员还是有点陌生​​。 无论如何,我遇到了与速度相关的问题,为问题5编写了解决方案。问题是, “ 2520是可以除以1到10的每个数字而没有任何余数的最小数字。什么是可以被1到20的所有数字平均除的最小正数? 我已经检查了一些,但还没有找到关于此问题的任何有关Python的信息。有一些完整的脚

  • 本文向大家介绍SpringBoot项目@Async方法问题解决方案,包括了SpringBoot项目@Async方法问题解决方案的使用技巧和注意事项,需要的朋友参考一下 现象: 1. 表面现象: 方法中输出的日志, 日志文件中找不到, 也没有任何报错(即@Async标注的方法没有执行, 也没有报错) 2. 分析现象: 日志中某个时刻之后没有了task-xxx线程的日志 原因: @Async异常方法默

  • 我已经安装并配置了SonarQube 3.7.1和sonar runner 2.3。 在尝试用c#解决方案运行sonar runner时,我遇到了一个错误: 我的声纳项目。房产看起来像 我想排除项目MPA. Build。但它不工作。 在MPA。sln将MPA归档。构建项目定义为 项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“MPA.Build”、“MP

  • 本文向大家介绍.NET Framework 从解决方案中的一个项目中卸载软件包,包括了.NET Framework 从解决方案中的一个项目中卸载软件包的使用技巧和注意事项,需要的朋友参考一下 示例