针对API控制器创建视图?

时间:2014-05-08 03:59:47

标签: asp.net-mvc razor asp.net-mvc-views asp.net-apicontroller

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

实现这一目标的最佳途径是什么?

更新

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

对于网页,我仍然希望从剃刀chtml视图中受益,我不希望用冗余的jQ或JS以及消耗数据的data-属性来污染我的视图。

2 个答案:

答案 0 :(得分:1)

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

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

更强大的方法是创建一个" Manager"处理应用程序的所有业务逻辑的层,然后让您的ApiControllers成为调用各自Manager类的瘦包装器。这会增加一些维护成本,但它会更好地遵守单一责任原则。

答案 1 :(得分:0)

简单的方法是只使用MVC。

您还可以将MVC + WebAPI合并到一个站点中。

使用第一个选项的原因是简单性,学习维护一个框架和一组抽象。

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

这两个框架都是由同一个团队构建的,它们都支持属性路由和许多类似的概念,并且两者都可以很好地协同工作。我见过人们成功地采取了两种方法。另请注意,visual studio具有结合了两者的模板。