0

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

达到此目的的最佳方法是什么?

更新

什么API将不得不暴露只是数据操作。

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

回答

1

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

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

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

+0

这就是我的问题,是否可以从世界,web api和MVC视图(不与js等消费)中受益。我喜欢保持我的观点尽可能地贫穷和干净。 – Shimmy

+1

@Shimmy:我了解你不想构建使用AJAX等的富客户端界面吗?你只想拥有一个WebApi,并基于其他人可以通过该API访问的相同数据来构建基本视图?可以想象,你可以将WebApi控制器注入到普通的MVC控制器中,并调用它们的方法来获取构建ViewModel所需的数据。 – StriplingWarrior

+0

@StripingWarrior,我读了你的评论。这就是我要做的!这就是答案,请更新你的帖子。 – Shimmy

0

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

您还可以在一个站点中结合使用MVC + WebAPI。

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

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

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

相关问题