ASP.NET MVC 4应用程序调用远程WebAPI

2023-11-27

我过去创建过几个 ASP.NET MVC 应用程序,但以前从未使用过 WebAPI。我想知道如何创建一个简单的 MVC 4 应用程序,通过 WebAPI 而不是通过普通的 MVC 控制器来执行简单的 CRUD 操作。诀窍在于 WebAPI 应该是一个单独的解决方案(事实上,很可能位于不同的服务器/域上)。

我怎么做?我缺少什么?仅仅是设置指向 WebAPI 服务器的路由吗?我发现的所有展示如何使用 MVC 应用程序使用 WebAPI 的示例似乎都假设 WebAPI 已“嵌入”到 MVC 应用程序中,或者至少位于同一服务器上。

哦,澄清一下,我不是在谈论使用 jQuery 的 Ajax 调用...我的意思是 MVC 应用程序的控制器应该使用 WebAPI 来获取/放置数据。


您应该使用新的 HttpClient 来使用您的 HTTP API。我还可以建议您使您的调用完全异步。由于 ASP.NET MVC 控制器操作支持基于任务的异步编程模型,因此它非常强大且简单。

这是一个过于简化的例子。以下代码是示例请求的帮助程序类:

public class CarRESTService {

    readonly string uri = "http://localhost:2236/api/cars";

    public async Task<List<Car>> GetCarsAsync() {

        using (HttpClient httpClient = new HttpClient()) {

            return JsonConvert.DeserializeObject<List<Car>>(
                await httpClient.GetStringAsync(uri)    
            );
        }
    }
}

然后,我可以通过 MVC 控制器异步使用它,如下所示:

public class HomeController : Controller {

    private CarRESTService service = new CarRESTService();

    public async Task<ActionResult> Index() {

        return View("index",
            await service.GetCarsAsync()
        );
    }
}

您可以查看下面的文章来了解 ASP.NET MVC 异步 I/O 操作的效果:

我对 C# 5.0 和 ASP.NET MVC Web 应用程序中基于任务的异步编程的看法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 4应用程序调用远程WebAPI 的相关文章

随机推荐