创建ASP_NET_Web_API_2.0应用实例

由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET MVC的书籍“额外奉送”的),以至于很多人会觉得ASP.NET Web API仅仅是ASP.NET MVC的一个小小的扩展而已,自身并没有太多“大书特书”的地方。而真实的情况下是:ASP.NET Web API不仅仅具有一个完全独立的消息处理管道,而且这个管道比为ASP.NET MVC设计的管道更为复杂,功能也更为强大。虽然被命名为“ASP.NET Web API”,但是这个消息处理管道却是独立于ASP.NET平台的,这也是为什么ASP.NET Web API支持多种寄宿方式的根源所在。 为 了让读者朋友们先对ASP.NET Web API具有一个感性认识,接下来我们以实例演示的形式创建一个简单的ASP.NET Web API应用。这是一个用于实现“联系人管理”的单页Web应用,我们以Ajax的形式调用Web API实现针对联系人的CRUD操作。 ASP.NET Web API 2.0 是一个用于构建 HTTP 服务的框架,它可以用来创建 RESTful 风格的 API,以便于客户端(如浏览器、移动设备等)进行数据交互。尽管 ASP.NET Web API 与 ASP.NET MVC 在编程模型上有很多相似之处,但两者的核心区别在于,Web API 更专注于处理 HTTP 协议,而 MVC 更侧重于构建 web 页面。Web API 的消息处理管道更加复杂且功能强大,而且它独立于 ASP.NET 平台,支持多种寄宿方式,如 IIS(WebHost)和自承载(SelfHost)。 在创建 ASP.NET Web API 2.0 应用时,你可以使用 Visual Studio 提供的项目模板来快速搭建基础框架,但为了更好地理解各个组件的作用,这里将演示一个手动创建的过程。这个实例是一个用于联系人管理的单页 Web 应用,它通过 Ajax 调用 Web API 进行 CRUD 操作。 1. 构建解决方案: 解决方案包含了多个项目,例如: - Common:包含共享的 Contact 数据模型。 - WebApi:包含 HttpController,实现 Web API 的逻辑。 - WebHost:ASP.NET Web 应用,实现 WebHost 寄宿。 - SelfHost:控制台应用,模拟 Self Host 寄宿模式。 - WebApp:ASP.NET Web 应用,前端界面,通过 Ajax 调用 Web API。 - ConsoleApp:控制台应用,用于模拟客户端远程调用 Web API。 2. 定义数据模型: 在 Common 项目中,定义 Contact 类,包含 ID、Name、PhoneNo、EmailAddress 和 Address 等属性,用于表示联系人信息。 3. 创建 Web API 控制器: 在 WebApi 项目中,创建一个名为 `ApiControllers` 的 Controller,继承自 `ApiController`。比如,可以创建 `ContactsController`,在其中实现 CRUD 操作的方法,如 GetContacts、GetContact、PostContact、PutContact 和 DeleteContact。 ```csharp public class ContactsController : ApiController { private readonly IContactRepository _repository; public ContactsController(IContactRepository repository) { _repository = repository; } // GET api/contacts public IEnumerable<Contact> GetContacts() { return _repository.GetContacts(); } // GET api/contacts/{id} public IHttpActionResult GetContact(string id) { var contact = _repository.GetContact(id); if (contact == null) return NotFound(); return Ok(contact); } // POST api/contacts [HttpPost] public IHttpActionResult PostContact(Contact contact) { if (!ModelState.IsValid) return BadRequest(ModelState); _repository.AddContact(contact); return CreatedAtRoute("DefaultApi", new { id = contact.Id }, contact); } // PUT api/contacts/{id} [HttpPut] public IHttpActionResult PutContact(string id, Contact contact) { if (id != contact.Id) return BadRequest(); if (!ModelState.IsValid) return BadRequest(ModelState); _repository.UpdateContact(contact); return StatusCode(HttpStatusCode.NoContent); } // DELETE api/contacts/{id} [HttpDelete] public IHttpActionResult DeleteContact(string id) { var contact = _repository.GetContact(id); if (contact == null) return NotFound(); _repository.DeleteContact(contact); return StatusCode(HttpStatusCode.NoContent); } } ``` 这里,`IContactRepository` 是一个接口,代表联系人存储的抽象,实际应用中,你可以实现这个接口来对接数据库或其他数据源。 4. 配置 Web API: 在 WebApi 项目中,需要在 `WebApiConfig.cs` 文件中注册路由和依赖注入。例如: ```csharp public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 使用依赖注入 config.DependencyResolver = new AutofacWebApiDependencyResolver(ContainerConfig.Configure()); } } ``` 5. 配置WebHost: 在WebHost项目中,设置 Global.asax.cs 中的 `Application_Start` 方法,注册 Web API 控制器,并启动 WebHost。 6. 实现客户端调用: 在 WebApp 项目中,使用 jQuery 或其他 JavaScript 库(如 AngularJS、React 等)编写前端页面,通过 Ajax 调用 Web API 完成数据的增删查改。 7. 自承载(SelfHost): 在 SelfHost 项目中,通过 `HttpSelfHostServer` 类创建并启动服务器,允许在非 IIS 环境下运行 Web API。 通过以上步骤,你可以了解 ASP.NET Web API 2.0 的核心概念,包括消息处理管道、控制器、路由、依赖注入以及客户端调用等。掌握这些知识后,你将能够独立创建和部署功能完备的 Web API 应用。


剩余11页未读,继续阅读




















- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 6贝叶斯信念网络.pptx
- 企业信息化建设.pptx
- 【优质】室内平面图制作软件-word范文(6页).pdf
- 通信原理第章习题(1).ppt
- 互联网+时代初中教师信息素养培育策略.docx
- EPC总承包项目管理手册(New).doc
- 软件开发过程记录表.doc
- 计算机网络试题及答案.doc
- 四层电梯PLC控制系统设计.doc
- 物联网控制基础课程教学改革的探索与实践.docx
- 2017最新电大统考计算机小抄1选择题.doc
- 2023年操作系统上机实验报告.doc
- AutoCAD室内施工图课程标准.doc
- 城区县乡村三级农村物流网络体系建设规划方案.docx
- 2022通信工作计划_.docx
- 医疗器械软件申报的关键点幻灯片课件.ppt



评论1