序言
最近工做的项目一直使用API,就想趁這个机会,把API的知识点进行一次梳理和总结,顺便提高一下本身对API全新的认识php
Web API 是ASP.NET平台新加的一个特性,它能够简单快速地建立Web服务为HTTP客户端提供API。Web API 使用的基础库是和通常的MVC框架同样的,但Web API并非MVC框架的一部分,微软把Web API相关的类从 System.Web.Mvc 命名空间下提取了出来放在 System.Web.Http 命名空间下。这种理念是把 Web API 做为ASP.NET 平台的核心之一,以使Web API能使用在其余的Web应用中,或做为一个独立的服务引擎。本文为了更好的理解Web API,先带你们了解一下 REST 和 RESTful Web APIhtml
理解REST和RESTful Web API
为了更好的理解Web API,先带你们了解一下 REST 和 RESTful Web API。如下内容大多来自维基百科。web
关于REST及RESTful的概念,已有很多文章介绍,这里整理几篇我以为不错的参考:数据库
- 维基百科的定义: REST
- 什么是REST跟RESTful? REST理论的中文详述,其中你能够了解到WCF Restful属于RPC 样式的 Web 服务,ASP.NET Web API属于RESTful Web 服务。
- 深刻浅出REST InfoQ的专文介绍,文中甚至有Roy T. Fielding当年REST博士论文的中文翻译连接。另外值得一提的,你们可能没听过Roy Fielding的大名,但若是得知他是HTTP规格的主要做者及Apache HTTP Server项目的发起人之一,应该不会有人怀疑他在Web技术领域的份量。
上面的文章建议你们认真的读一下,这里咱们简要的介绍下REST 作入门介绍,理解整个 REST 能让咱们在 ASP.NET Web API 的路上更顺畅。api
REST(全名:Representational State Transfer),State Transfer 为 "状态传输" 或 "状态转移 ",Representational 中文有人翻译为"表征"、"具象",合起来就是 "表征状态传输" 或 "具象状态传输" 或 "表述性状态转移",不过,通常文章或技术文件都比较不会使用翻译后的中文来撰写,而是直接引用 REST 或 RESTful 来表明,由于 REST 一整个观念,想要只用六个中文字来完整表达真有难度。是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。浏览器
REST 从资源的角度来观察整个网络,分布在各处的资源由URI肯定,而客户端的应用经过URI来获取资源的表征。得到这些表征导致这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。安全
目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性状态转移(REST),其中REST模式的Web服务与复杂的SOA和RPC对比来说显的更加简洁,愈来愈多的web服务开始采用REST风格设计和实现。服务器
须要注意的是,REST是设计风格而不是标准,但REST设计风格常基于使用HTTP,URI,和XML以及HTML这些现有的普遍流行的协议和标准。REST设计风格有以下要点:网络
- 资源是由URI来指定。
- 对资源的操做包括获取、建立、修改和删除资源,这些操做正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
- 经过操做资源的表现形式来操做资源。
- 资源的表现形式则是XML或HTML,取决于读者是机器仍是人,是消费web服务的客户软件仍是web浏览器。固然也能够是任何其余的格式,如JSON。
另外,使用REST须要知足一些要求,如客户端和服务器结构、链接协议具备无状态性、可以利用Cache机制增进性能等。架构
REST 自己是设计风格而不是标准。REST 谈论一件很是重要的事,如何正确地使用 Web标准,例如,HTTP 和 URI。想要了解 REST 最好的方式就是思索与了解Web 及其工做方式。若是你设计的应用程序能符合 REST 原则 (REST principles),这些符合 REST 原则的 REST 服务可称为 "RESTful web service" 也称 "RESTful Web API"。"-ful" 字尾强调它们的设计彻底符合 REST 论文里的建议内容。
资源 RESOURCE
在 REST 中的资源 (Resource) 表明整个网络上的资源。网络上提供了各式各样的资源,而网络上的资源由 URI (统一资源标识符,Uniform Resource Identifier) 来提供。
回想,你如何连上个人 博客,你可能经过浏览器直接输入 www.cnblogs.com/shanyou 此域名来到达首页,也能用书签或网络上的连接,经点击后来连上个人博客。而后,你想看这一篇名为「REST 入门介绍」的文章,因此以你接下去点击这文章的标题连结,接去下阅读。咱们简易了解一下整个流程:
- 经过URL ( http://www.cnblogs.com/shanyou ) , Client 向 http://www.cnblogs.com/shanyou 发出请求
- www.cnblogs.com/shanyou 收到请求,回应首页给 Client
- Client 又点击 REST 文章连结 (假设是 http://www.cnblogs.com/shanyou/archive/2011/06/30/2095018.html) 向http://www.cnblogs.com/shanyou发出archive/2011/06/30/2095018.html 此篇文章的请求
- www.cnblogs.com/shanyou 收到请求,响应 REST 文章内容给 Client
Client 的经过 URI 来获取资源的具体象征 (Representational)。Client 取得这些具体象征使这些应用程序转变其状态 (以 浏览器而言,取得 HTML、CSS、JavaScript … 来生成界面),随着不断取得资源的具体象征, Client 端不断地改变其状态,这样不断的反复 (iterations ) 过程就是所谓的 Representational State Transfer。
RESTful Web API(也称为RESTful Web服务)是一个使用HTTP并遵循REST原则的Web服务。它从如下请求资源的三个方面进行定义:
- URI,好比:http://example.com/resources/。
- Web服务接受与返回的互联网媒体类型,好比:JSON,XML ,YAML 等。
- Web服务在该资源上所支持的一系列请求方法(好比:POST,GET,PUT或DELETE)。
本文要讲的ASP.NET Web API 就是RESTful Web API的一种。下表列出了在实现 RESTful Web API 时HTTP请求方法的典型用途:

不像基于SOAP的Web服务,RESTful Web服务并无“正式”的标准。这是由于REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可使用其余各类标准(好比HTTP,URL,XML,PNG等)。
使用 WEB 标准
上述是最接近平常的范例,这些行为在 HTTP 规范中称之为 GET,也就是经过URL 来 GET 我想要的资源。另外一经常使用的例子是填写表单,例如,登入表单,我想进行登入动做,就必须先发送帐号与密码给某一资源,此资源会验证你所传送的数据是否正确,再进行后续动做。咱们发送信息给资源的行为在 HTTP 规范中称之为 POST。
在 HTTP/1.1 RFC 2616第 5.1.1 Method 一节定义了八大类 HTTP 方法,除了咱们经常使用的 GET 与 POST 以外,在 REST 中经常使用的还有 PUT 与 DELETE。此 GET, POST, PUT, DELETE 正好能够对应咱们 CRUD (Create, Read, Update, Delete) 四种数据操做。
HTTP Method 与 CURD 数据处理操做对应 |
HTTP方法 |
数据处理 |
说明 |
POST |
Create |
新增一个没有id的资源 |
GET |
Read |
取得一个资源 |
PUT |
Update |
更新一个资源。或新增一个含 id 资源(若是 id 不存在) |
DELETE |
Delete |
删除一个资源 |
RESTFUL WEB SERVICE
RESTful Web Service (又称 RESTful Web API) 是一个使用 HTTP 并符合 REST 原则的 Web 服务。咱们知道,经过 URL 能够传送 GET 请求,在 表单指定 method="GET|POST" 来送出请求。但咱们要处理 PUT 或 DELETE 的请求呢?经过 RESTful 咱们能够简单 URI 来定义资源并和 HTTP 方法配合使用。
Resource 与 HTTP 方法的对应 |
资源 |
资源说明 |
GET |
PUT |
POST |
DELETE |
http://www.cnblogs.com/Products/ |
Products是一组资源集合 |
列出 该组资源集合中每一个资源的详细信息 |
更新 当前整组资源 |
新增 或附加一个新资源。该操做传回新资源的URL |
删除 整组资源 |
http://www.cnblogs.com/Products/1 |
Products/1是单个资源 |
取得 指定的资源的详细信息 |
更新 或新增指定的资源 |
新增 或附加一个新元素 |
删除 指定的元素 |
以上表格有没有很像咱们通常在对数据库表格的操做顺序,进入一个 Table 的数据首页 (一般是列表),此页面会有「新增、更新、删除、详细」等连结,你想进行什么操做,就点那一个连结。
在 RESTful 每一个资源有本身独立的 URI, Client 从资源集合或单个资源开始进入,不论是资源集合或单个资源,咱们都能与 HTTP 方法配合使用,例如,GET 下载,PUT 更新,POST 新增,DELETE 删除。
ASP.NET Web API 是一个框架(framework),能让你在 .NET Framwork 之上架设 HTTP 服务 (HTTP Services)。ASP.NET Web API 是 .NET Framework 上构建 RESTful 应用程序的理想平台。
什么是REST:结束语
REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件做为一个总体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。因为它简便、轻量级以及经过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构能够实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。Ajax 和 RESTful Web 服务本质上是互为补充的。开发人员能够轻松使用 Ajax 和 RESTful Web 服务一块儿建立丰富的界面。
上面资料有参考
清清飞扬园友:http://www.cnblogs.com/joeblackzqq/archive/2011/06/16/2082841.html
Liam Wang 园友 : http://www.cnblogs.com/willick/p/3441432.html
张友善 园友:http://www.cnblogs.com/shanyou/archive/2012/05/12/2496959.html
该内容只是入门的参考,理解资料
- 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打形成本身的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
- 小弟刚迈入博客编写,文中若有不对,欢迎用板砖扶正,但愿给你有所帮助。