从同一个项目中的普通web mvc调用web api

时间:2013-01-17 18:55:22

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

我有一个包含普通MVC控制器和web api控制器的web MVC应用程序。

从同一项目中的正常MVC控制器操作调用web api控制器的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

ASP.Net Web API旨在通过HTTP调用,而不是从服务器端逻辑调用。也许您呈现的演示文稿可以通过客户端请求(例如ajax)调用您的Web API。

如果您发现自己处于MVC控制器操作需要执行仅在Web API操作中可用的代码的位置,那么您应该考虑将该代码与Web API分离并将其移动到更加平台无关的区域您的代码(服务层?)。

答案 1 :(得分:0)

如果您只是需要一种方法将JSON(或类似的)发送回客户端,您只需选择从MVC控制器返回除了视图之外的其他内容。然后,它们都在您的MVC Web应用程序中处理,您不需要使用Web API。

public JsonResult DetailsJson(int id)
{
    Car car = carRepository.Find(id);
    return Json(car, JsonRequestBehavior.AllowGet);
}

然后使用

调用此示例
/Cars/DetailsJson/3

请注意,出于测试原因,样本中允许使用GET(通过添加JsonRequestBehavior.AllowGet),如果您只想支持POST请求,则可以删除。

答案 2 :(得分:0)

请参阅Is it an antipattern to call WEBAPI services from MVC Controllers?

在坚果壳中,使用httpclient进入你的api。