一.WebAPI简介
ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。
可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等。
WebApi类型项目的最大优势就是,开发者再也不用担心客户端和服务器之间传输的数据的序列化和反序列化问题,因为WebApi是强类型的,可以自动进行序列化和反序列化,一会儿项目中会见到。
二.为什么要用 Web API
Web API最重要的是可以构建面向各种客户端的服务。另外与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服务(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。
当你遇到以下这些情况的时候,就可以考虑使用Web API了。
- 需要Web Service但是不需要SOAP
- 需要在已有的WCF服务基础上建立non-soap-based http服务
- 只想发布一些简单的Http服务,不想使用相对复杂的WCF配置
- 发布的服务可能会被带宽受限的设备访问
- 希望使用开源框架,关键时候可以自己调试或者自定义一下框架
三.Web API的主要功能
1. 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作
通过不同的http动作表达不同的含义,这样就不需要暴露多个API来支持这些基本操作。
2. 请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回JSON格式还是XML格式。
3. 请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。
4. 原生支持OData。
5. 支持Self-host或者IIS host。
6. 支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
四.Web API和WebService和WCF的区别
Web Service
1、它是基于SOAP协议的,数据格式是XML。
2、只支持HTTP协议。
3、它不是开源的,但可以被任意一个了解XML的人使用。
4、它只能部署在IIS上。
WCF
1、这个也是基于SOAP的,数据格式是XML。
2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.。
3、WCF的主要问题是,它配置起来特别的繁琐。
4、它不是开源的,但可以被任意一个了解XML的人使用。
5、它可以部署应用程序中或者IIS上或者Windows服务中。
WCF Rest
1、想使用WCF Rest service,你必须在WCF中使用webHttpBindings。
2、它分别用[WebGet]和[WebInvoke]属性,实现了HTTP的GET和POST动词。
3、要想使用其他的HTTP动词,你需要在IIS中做一些配置,使.svc文件可以接受这些动词的请求。
4、使用WebGet通过参数传输数据,也需要配置。而且必须指定UriTemplate。
5、它支持XML、JSON以及ATOM这些数据格式。
Web API
1、这是一个简单的构建HTTP服务的新框架。
2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术。
3、不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式)。
4、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮。
5、它可以部署在应用程序和IIS上。
6、这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好。
7、Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。
五.创建一个Asp.Net WebAPI项目
1.新建一个Asp.net空应用程序
2.选择WebAPI
3.这里我们新增一个名为PersonController的Web Api2控制器
3.在控制器中写3个简单的方法
public class PersonController : ApiController
{
//不带参数的方法
public string[] Get()
{
return new string[] { "shuke", "beta", "tom" };
}
//根据学生ID查询学生姓名
public string Get(int id)
{
if (id == )
{
return "shuke";
}
else
{
return "beta";
}
}
//返回学生姓名的长度
public int Get(string name)
{
return name.Length;
}
}
4.到这里一个简单的Web API项目就创建完成了,点击运行
直接运行,不会直接跳转到到我们写的api里面,这里我们要将地址后面加上文件地址加上这里指定的后缀(也可以改为别的),这里我们是api/Person/
在浏览器地址加入后缀,当id=1是,可以看到这里结果为shuke,那么到这里就成功查询出来了。
5.调试工具推荐:到这里基本一个webapi项目就完成了,剩下了就是显示了。首先得先运行项目,然后再浏览器地址栏找到网址,然后复制到postman中,然后再调用相关的函数。我们在做大型项目是在浏览器调试会有诸多不便,这里推荐一个常用的接口调试工具Postman
PostMan地址 :https://www.getpostman.com/