我需要创建一个网站,其中一些网页应该可以通过API从外部客户端访问,但我仍然想要定期检查,显示和操作相同数据的MVC Razor视图。
实现这一目标的最佳途径是什么?
更新
API必须公开的只是数据操作。
对于网页,我仍然希望从剃刀chtml视图中受益,我不希望用冗余的jQ或JS以及消耗数据的data-
属性来污染我的视图。
答案 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具有结合了两者的模板。