我的解决方案中有两个项目,一个mvc项目和一个web api项目。在mvc应用程序中使用web api项目的最佳方法是什么?
到目前为止我提出的选项:
如果有更好的选择,请分享。
答案 0 :(得分:0)
在控制器文件夹中,您有以下文件:
namespace BeerDev.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home";
return View();
}
}
}
使用以下文件创建另一个名为ControllersApi的文件夹:
namespace BeerDev.ControllersApi
{
public class HomeController : ApiController
{
public IHttpActionResult Get()
{
string beers;
using (StreamReader sr = new StreamReader(HostingEnvironment.MapPath("~/mockData/beerFront.json")))
{
beers = sr.ReadToEnd();
}
if (string.IsNullOrEmpty(beers))
{
return NotFound();
}
return Ok(beers);
}
}
}
在Web Api项目中,有一种特殊的控制器,但仍然是一个控制器。
您可以参考此webAp2_example。
答案 1 :(得分:0)
如果ASP.Net MVC应用程序是唯一使用Web API的应用程序,那么将它们放在单个项目中是有意义的。
在我的场景中,我使用Angular使用SPA,因此我将MVC和Web API控制器保存在Controller文件夹中的单独文件夹中。
主要优点是我可以共享模型和类库。另外,我不必担心CORS。
请注意 RoutePrefix 。
namespace MyApp.Web.Controllers.API
{
[RoutePrefix("api/users")]
public class UsersApiController : ApiController
{
}
}
namespace MyApp.Web.Controllers.MVC
{
public class UsersController : Controller
{
public ActionResult Index()
{
return View();
}
}
}