当前位置:首页 > Windows程序 > 正文

ASP.NET MVC4中调用WEB API的四个方法

2021-03-25 Windows程序

IT168技术】当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法。就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务。然而,越来越多的互联网应用,希望将服务只是通过HTTP发布出去,而不是使用复杂的SOAP协议。为了解决这个问题,ASP.NET WebAPI就出现了。

  ASP.NET API简单来说就是对REST协议进行了充分的支持,可以使用HTTP中的GET,POST,PUT和DELETE进行服务的发布。在本文中,将以例子说明如何使用ASP.NET WEB API去创建一个REST风格的Web服务,并且如何编写客户端对其进行连接,此外在文中还将学会如何通过HTTP协议,使用Entity Framework和SQL Server去创建一个CRUD(增删改)的应用程序。本文的阅读对象为具备一定ASP.NET MVC基础的用户。

  前期准备

  为了继续本文的学习,首先需要安装ASP.NET MVC4和JSON.net,ASP.NET Web API是ASP.NET MVC 4 BETA版的一部分,可以从下面这个地址下载得到:。

  此外,还需要下载Json.NET,它是一个在.NET中高性能的对JSON进行解析处理的类库,下载地址在:, 在本文的学习中,将会用到Json.net。

  创建ASP.NET MVC4 WEB API应用

  下面,首先打开VS.NET 2010,然后建立一个新的项目,选择使用C#语言,然后选择ASP.NET MVC4 WEB APPLICATION,再选择使用Web API 模板,如下两个图所示:

技术分享

技术分享

  在建立好工程项目后,会发现项目的目录结构跟普通的MVC结构是差不多的,但其中会发现在Controller文件夹中,会发现多一个ValuesController的类文件,这个类是Web API的控制器类,它继承了ApiController类,而不是一般MVC框架中的Controller类,代码如下:

  public class ValuesController : ApiController

  {

  ...

  }

  ValuesController类会自动生成一个基于REST风格的脚手架,以方便用户进行编码,其中提供了GET,POST,PUT和DELETE方法。下面的表格详细列出了每个HTTP方法的含义:

技术分享

  要注意的是,Wep API 本身不会指定以上这些方法中每个方法的具体处理流程,比如,对于服务端的文件系统,可以使用XML数据或者自定义数据存储格式,从而在这些方法中使用,主要是根据目标的操作类型和数据的存储形式,以上这些方法可以接收所需要的数据类型。

  在我们继续操作前,先在项目的根目录下创建一个新的名为API的文件夹,并且将ValuesController.cs这个文件放到其中,这样做的目的,主要是为了将Web API控制器跟普通的MVC控制器进行分离,方便今后的开发。

  利用Entity Framework创建数据层

  现在,往Models文件夹中,新增一个Entity Framework数据实体。我们使用的是Northwind数据库中的Customers表进行操作,命名数据实体为Northwind,如下图:

技术分享

  之后,选择customer表,创建一个数据实体customer如下:

技术分享

  Web API控制器的编码

  接下来,我们对已经生成了框架的Web控制器进行完善其中的代码,代码如下:

  public class CustomersController : ApiController

  {

  //Select All

  public IEnumerable Get()

  {

  NorthwindEntities db = new NorthwindEntities();

  var data = from item in db.Customers

  orderby item.CustomerID

  select item;

  return data.ToList();

  }

  //Select By Id

  public Customer Get(string id)

  {

  NorthwindEntities db = new NorthwindEntities();

  var data = from item in db.Customers

  where item.CustomerID == id

  select item;

  return data.SingleOrDefault();

  }

  //Insert

  public void Post(Customer obj)

  {

  NorthwindEntities db = new NorthwindEntities();

  db.Customers.AddObject(obj);

  db.SaveChanges();

  }

  //Update

  public void Put(string id, Customer obj)

  {

  NorthwindEntities db = new NorthwindEntities();

  var data = from item in db.Customers

  where item.CustomerID == id

  select item;

  Customer old = data.SingleOrDefault();

  old.CompanyName = obj.CompanyName;

  old.ContactName = obj.ContactName;

  old.Country = obj.Country;

  db.SaveChanges();

  }

  //Delete

  public void Delete(string id)

  {

  NorthwindEntities db = new NorthwindEntities();

  var data = from item in db.Customers

  where item.CustomerID == id

  select item;

  Customer obj = data.SingleOrDefault();

  db.Customers.DeleteObject(obj);

  db.SaveChanges();

  }

  }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67509.html