从常规MVC控制器访问ASP Web API方法

时间:2013-03-20 20:35:26

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

我有一个相当复杂的解决方案,我使用ASP Web API等实现。我现在有三个项目在我的解决方案中值得推荐。一个是仅包含api方法的WebAPI。其他两个是我的应用程序的后端和前端。后端使用SPA方法为视图加载大多数空壳,并使用ajax来填充所有内容。另一方面,由于SEO问题,前端决定通过更传统的方式实现,也就是说大多数东西都是服务器端。我的问题是,简单地从前端控制器调用web api方法并将结果发送到视图是否可行且是好的做法?我没有看到在常规控制器中复制大多数代码的重点,因为它都是用api完成的。

有关此的任何样品吗?我一直在寻找但找不到多少。

2 个答案:

答案 0 :(得分:2)

如果需要从C#代码(MVC控制器或其他地方)调用Web API服务,可以使用HttpClient或WebClient通过HTTP调用服务。

如果您只需要重用代码,则应将其抽象为类库(DLL)并从Web API和MVC项目中引用。

答案 1 :(得分:1)

我遇到了同样的情况,至少在一段时间内使用了MVC控制器的Web API控制器。您可以通过创建Web API控制器的新对象然后从它们调用适当的方法来完成此操作。我发现这个方法最初工作正常,但是创建了依赖关系,这意味着你的Web API也不能在不改变MVC控制器的情况下改变。

我的建议是在模型上放置与部分类一样有意义的功能,如果仍然不够,那么创建另一个包含所有共享业务逻辑的逻辑层。您不应该在MVC和Web API控制器中使用重复的逻辑,它们应该只是用来获取数据的粘合剂。