需要帮助概念化Web API和MVC 5解决方案

时间:2018-04-30 05:20:32

标签: asp.net-mvc asp.net-web-api2 crud

我的任务是编写一个API来将新用户POST到现有数据库。我已经为主MVC项目创建了一个单独的WEB API 2项目(带有MVC)。

因为我使用的是现有数据库,所以我使用ADO.NET实体数据模型(实体框架)数据库优先方法,在API项目中使用我的各种模型类文件生成.edmx文件。

我还想在创建控制器时使用控制器脚手架选项,根据我的模型自动创建视图和CRUD操作。但是,edmx生成的模型不会出现在控制器配置中:see image for context

最后,我不知道如何连接 Web API项目和主MVC项目,以便您可以从主项目调用API?

我假设我需要在主MVC项目中创建一个使用HttpClient包的控制器。但是,我确信它不是那么简单。

2 个答案:

答案 0 :(得分:0)

这实际上是两个不同的问题,但我会对它们都有一个解决方法......

在实体框架上下文中使用生成的类,这些类位于定义它们的不同项目中。您需要使用普通.net assembly referencing来引用Web项目中的API项目。他们也需要公开,幸运的是这是默认的。

如何在运行时访问API完全取决于您的设计。如果它是一个设计为从浏览器调用的前端api,请在JavaScript中使用XMLHTTPRequest或$ .ajax()来进行ajax调用。如果它是设计为由服务器端代码调用的后端API,请使用HttpClient。记下它所说的文件:

  

HttpClient旨在实例化一次,并在应用程序的整个生命周期中重用。

换句话说,不要为每个请求实例化HttpClient,创建一个并共享它,它可以被重用。

答案 1 :(得分:-1)

您可以直接在mvc应用程序中将您的apis与http客户端一起使用。

using (var client = new HttpClient())
{
  client.BaseAddress = new Uri("http://localhost:12345/api/");
  //HTTP Requests
}