ASP.NET Web API是在ASP.NET MVC4.0发布的,可以提供给浏览器,移动设备,WINDOWS服务等访问的Http服务。可以提供数据CRUD(Create,Retrive,Read,Update)操作,相对于WebService、WCF较简单轻量。Web API侧重于数据(资源)操作,WebService和WCF侧重于业务逻辑(功能),如果涉及到复杂的业务操作,不推荐使用Web API。
这里给出一个基础的Web API应用程序,首先必须有ASP.NET MVC4。
- 创建MVC4应用程序,创建成功之后和普通的MVC框架无异
- 添加控制器-->空的API控制器,
创建之后发现和MVC控制器不同之处在与API继承自ApiController,而MVC控制器继承自Controller。
在Global里面多了一个WebApiConfig.Register(GlobalConfiguration.Configuration)的路由注册。
- 修改Web API路由,这里默认是没有“action”的,这种情况下API默认的操作只有List<T>GET(),T GET(int id),PUT(T object),POST(),DELETE()操作。可以根据提交时的TYPE自动路由到对应的控制器,也就是说这几个Action都是死的。如果需要自定义Action名称,需要在这里加上“action”。
- 编写Controller,这里需要注意一点的是不标记特性(HttpGet,HttpPost),默认是HttpPost的
public class WebApiController : ApiController { public IList<StudentVo> Get() { return ServiceFactory.StudentService.GetStudents(); } [HttpGet] public void Delete(int id) { ServiceFactory.StudentService.DeleteStudent(id); } public int Add() { return ServiceFactory.StudentService.SetStudent( new StudentVo { Address = "杭州", Id = 0, IsChinese = true, Name = "wangqi", Number = "30801234", Phone = "1508861xxxx", Sex = 1 }); } public int Modify(int id) { return ServiceFactory.StudentService.SetStudent( new StudentVo { Address = "杭州" + id, Id = id, IsChinese = true, Name = "wangqi", Number = "30801234", Phone = "1508861xxxx", Sex = 1 }); } }
- 编译发布web api,这里我是发布到iis上
- 程序调用,这里返回xml或者json数据,可以反序列化成对象来使用
static void Main(string[] args) { var request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:7066/api/WebAPi"); request.Method = "GET"; request.Timeout = 30000; using (var response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.OK) { var data = response.GetResponseStream(); } } }
- 浏览器调用