2

我需要创建一个网站,其中一些页面应该可以通过 API 从外部客户端访问,但我仍然想制作常规的 MVC Razor 视图来检索、显示和操作相同的数据。

实现这一目标的最佳方法是什么?

更新

API 必须公开的只是数据操作。

对于网页,我仍然希望从 razor chtml 视图中受益,我不喜欢用多余的 jQ 或 JS 污染我的视图,也不喜欢data-消耗数据的属性。

4

2 回答 2

1

只需使用您想要的页面创建一个 MVC 项目,然后创建ApiControllers(来自Web API框架)作为 RESTful 端点。您可以对视图进行编程,以从 API 操作中检索数据作为 JSON 对象,并使用 javascript 使用它们。其他人可以点击相同的 API 操作并以其他方式使用数据。

如果您想从 WebApi 开始,并基于其他人可以通过该 API 访问的相同数据构建基本视图,您可以将 WebApi 控制器注入到您的普通 MVC 控制器中,并调用它们的方法来获取您需要的数据构建您的 ViewModel。只要您的 API 控制器不需要做任何“开箱即用”的事情,例如Request直接检查对象,这应该可以正常工作。

一个更健壮的方法是创建一个“管理器”层来处理应用程序的所有业务逻辑,然后让你的 ApiControllers 只是围绕调用它们各自的管理器类的薄包装器。这会增加一点维护成本,但会更好地遵守单一职责原则。

于 2014-05-08T04:07:05.830 回答
0

最简单的方法是只使用 MVC。

您还可以将 MVC + WebAPI 组合在一个站点中。

选择第一个选项的原因是简单,并且学习维护一个框架和一组抽象。

但是,如果您有以下任何要求,添加 Web API 会变得很有趣: 1. 您想要为响应类型进行内容协商(例如 XML 与 Json 进行相同的操作)。2. 你想要支持 CORS 3. 你想要一个 API 的帮助页面。4. 您希望使用以休息和资源为中心的方法(基本上是 GET /resource 而不是 /resource/GetData)为 API 构建 Url 空间。5. 更容易对控制器和动作进行单元测试。

这两个框架都是由同一个团队构建的,它们都支持属性路由和许多类似的概念,并且都可以很好地协同工作。我已经看到人们成功地采用了这两种方法。另请注意,Visual Studio 的模板从一开始就结合了它们。

于 2014-05-08T04:09:36.550 回答