2014-03-12 123 views
1

是否可以在MVC控制器中使用/调用我的Web API方法? 我有一个Web API用于移动和其他平台,我正在开发一个.NET Mvc网站。 这个建筑是否合理?在MVC控制器中使用Web Api

感谢

+7

一般来说,有两种整洁的方式来处理这个:要么调用使用Javscript从页面本身获取WebAPI方法,或者将这些方法的内部逻辑移动到一个单独的位置,MVC控制器和WebAPI可以随意调用它。 – anaximander

回答

2

是的,它是可能的但如果你希望为使用来自多个不同的客户端您的API我建议你创建你的API作为一个单独的应用程序,然后可以管理/相应的缩放。

本质上,你指的是“狗食”你自己的API,使你自己的web应用程序没有任何不同于任何其他客户端。

我们做类似的事情,让我们的MVC应用程序调用我们的API(使用HttpClient)。我们在同一个应用程序中也有很多客户端代码,它们直接使用CORS调用API。

我们已经将这个架构在生产中运行了2年,现在没有任何问题。

1

这里是我如何调用从MVC控制器我的Web API控制器:

public class invoiceController : ApiController 
    { 
     private myEntities db = new db1Entities(); 

     // GET api/invoices 
     public IQueryable<invoices> Getinvoices() 
     { 
      return db.invoices; 
     } 
} 

内单独MVC控制器:

public ActionResult ShowInvoices() 
{ 
    var webApi = new invoicesController(); 
    //this must return strongly typed object 
    var myarray = webApi.Getinvoices(); 
    return View(myarray); 
} 
+0

这不是一个好方法。如果您想在* same *应用程序中共享MVC和Web API之间的逻辑,请将其移入单独的类;不要从MVC调用Web API控制器。 –