【问题标题】:How to separate Web API from MVC 5如何从 MVC 5 中分离 Web API
【发布时间】:2014-07-25 21:57:52
【问题描述】:

我有几个 MVC 项目,我不想以 RESTful 方式使用我的控制器。我希望控制器调用单独的 REST 服务。该服务是独立的,因为我们将构建 HTTP 服务,这些服务不仅可以被 MVC Web 客户端使用,还可以被其他移动设备使用。

我创建了几个单独的 MVC 5 项目和一个 Web API 项目

1) 我的问题是我正在使用 ajax 调用来填充视图。 ajax 请求是否应该调用我的 MVC 控制器,然后让我的 MVC 控制器通过 webclient/httpclient 调用 Web Api?还是应该绕过 MVC 控制器直接向 Web Api 控制器发出 ajax 请求?

2) 最重要的是,如果我 99% 的请求是 AJAX 请求,我是否应该使用 MVC 5 项目?我不会返回视图,只是返回数据。我应该只使用常规的 ASP.net 页面并对 Web API 服务进行 Ajax 调用吗?或者以这种方式使用 .net MVC 是否可以接受?

【问题讨论】:

    标签: asp.net-web-api asp.net-mvc-5


    【解决方案1】:

    我的 2 美分:

    我认为,最好通过客户端ajax请求直接调用web api服务来获取数据。

    你可以跳过 asp.net 和 asp.net mvc 5 项目,创建 asp.net web api 空项目,并在其中添加 html 页面。

    我建议使用单页应用程序结构/设计。以下示例项目可能在这方面有所帮助。

    https://github.com/MarlabsInc/webapi-angularjs-spa

    http://msdn.microsoft.com/en-us/magazine/dn463786.aspx

    【讨论】:

    • 但我希望我的 Web API 与其他项目分开,以便移动设备和任何其他第三方客户端使用它。
    • @tdw 你已经完成了多少开发?如果你将现有的 api 控制器重新分解/移动到新的 web api 项目,这个结构将允许你将 web api 逻辑从 asp.net mvc 项目中分离出来。此外,如果您从头开始,我(Answer)提出的上述解决方案应该可以正常工作。最后,我根据您的描述以及我对它的理解进行了回答。如果我理解有误,请纠正我,并进一步解释。
    • 我确实有 web api 控制器作为 web api 项目。我有几个使用 web api 的 MVC 项目。您建议我做的是创建一个 asp.net web api 并向其中添加 html 页面,但是我们有移动应用程序和需要使用我们的 Web API 的 3rd 方供应商。这就是我想让它独立的原因。
    • 好的,无论我们上面讨论的解决方案结构如何,您都可以调用您的 web api REST api 端点。唯一要做的就是确保启用了 CORS。 asp.net/web-api/overview/security/… 我建议使用 html 页面,因为使用 razor 或 aspx 视图引擎似乎没有任何好处。此外,根据上面的描述,您只是从服务器返回数据,我得出结论,为什么不使用单页应用程序然后使用 html 页面。希望对您有所帮助。
    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2021-10-27
    • 2015-01-21
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多