我们有一个Spa客户端,它运行在aspnet核心Web应用程序(aspnet核心spa模板)中。 Api项目是业务逻辑和数据访问所在的位置,可以被其他客户端调用,例如本机,其他Spas等等...... Web应用程序受到cookie中介的保护,外部提供程序可以登录,而web api是受持票人代币保护。
我们注意到,如果我们在Web应用程序中向Api项目添加引用,则Api项目中定义的控制器可在Web应用程序中使用。因此,只需添加引用,我们就可以对驻留在Web应用程序中的Spa进行本地ajax调用/ api / data。我们在这里没有什么额外的事情,没有自定义控制器解析器,装配加载等......
现在aspnet核心mvc的功能如何?我们是否正确假设Web应用程序只是发现控制器,但在配置主机时忽略Api项目中的任何program.cs / startup.cs?
答案 0 :(得分:2)
没有。这不是它的工作原理。首先,“MVC”和“Web Api”之间的界限在这一点上比任何事都更迂腐。在Core中,它们是相同的。如果你的项目只是一个API,你可以从标准的MVC服务中留下一些东西,但它仍然使用“MVC”。因此,调用某个“API”或“MVC”项目并不意味着什么。你可以根据需要混合搭配。
如果您有两个单独的项目,那么您应该遵循这一点并将所有内容分开。一个人不应该依赖另一个人。您可以随时从MVC项目“调用”您的API,就像使用任何其他HTTP托管服务一样。但是,您将无法利用UrlHelper
之类的内容为您的MVC项目生成API操作的网址。你只需要“知道”这些。
如果您希望两个项目紧密集成,那么它们不应该是两个项目。只需要一个网站项目,并将所有API和MVC内容移入其中。然后,你真的会分享所有的东西。