先看我对REST的一点认识,下面是《rest实战》 这本书的序言文字:
在我刚刚开始从事解决计算问题的时候,业界就有不少人有一个愿望:将系统设计为可以被自由组合的组件。互联网(Internet)无远弗届的普遍链接为这个愿望推波助澜,而且增长了一个新的愿望:使得组件在引入了延迟和不可靠性的网络之上也能正常工做。人们尝试了这个世界上的不少系统,其中的许多系统都失败了——一般伴随着悲伤的啜泣。
一个伟大的成功案例是WWW(WorldWideWeb,万维网)。它的成功既渗透进了商业运转之中,也渗透进了流行文化之中。它为人们提供了一个机会:在全球范围内以几乎任意预先安排的协做方式从不少来源获取信息。
正如咱们如今所知道的,Web并不是是计算问题的所有或者终极的解决方案,可是有不少人相信Web给咱们上了重要的一课,即如何构造一个由网络化的组件组成的系统。不少人利用了Web的协议——HTTP来链接系统。可是有一些人认为咱们应该更进一步,不只仅将HTTP做为一种便于使用的数据通道,而是拥抱Web自己正常工做的方式,将其做为系统协做的基础。 php
这种思想集合在“REST”这个名字下,它所指的是RoyFielding的博士论文,这篇论文被说起的次数远远超过了它真正被阅读的次数。追随REST的原理成为了日益增加的共识,它为网络化的组件正常工做开辟了一条硕果累累的大路,而这条大路正创建在Web自身的巨大成功之上。
这个愿景是颇有吸引力的,可是为了达到目标还须要作不少事情。咱们必须理解REST的原理,而且思考如何将其应用到系统集成天天所要解决的问题之上。这就是本书的做者所承担的任务:将REST从一个有吸引力的愿景变成一个已经实现的系统。他们已经作了不少,教会了我如何从资源的角度思考,如何使用HTTP的惯用语(idiom),以及超媒体控件(hypermediacontr01)的重要性。做为阅读的结果,本书将为你应用REST思想的核心元素打下坚实的基础。 html
REST”是一种思想,运用到开发上就是一种架构风格。
1)而使用“REST”的目的是什么了?
经过上面这段文字能够得出就是用来开发大量的网络化组件,这样之后一个系统的设计就只要对这些网络化组件进行自由组合就能够了。
好比:如今大部分的互联网公司,阿里、百度、腾讯、优酷、新浪等都开发了本身的开发平台,对公布了不少业务接口提供给开发者进行二次开发,咱们能够想象成这些接口就是咱们系统中的组件,本身开发一个系统的时候直接用这些组件就能够了;固然如今这些网络组件还不是不少,不能彻底知足支撑一个系统,但只要之后各个公司都遵循这种思想去作的话,系统的组件化是早晚的事。前端
2)互联网早就有了,那为何REST如今才被提出来了?
这咱们就要回过头来看一下整个Web开发过程,从中寻找咱们须要的答案。
互联网刚开始只是你们用来对文件、文字、图片等资源进行分享的,因此那时候的网页基本都是用HTML编写的静态页面,每个url地址都是对应着一个惟一的资源,多是一篇文章,也能够是一张图片。用如今的REST来看那时候的互联网是彻底符合这种思想的。
让互联网牢牢作资源的分享,是不够的,咱们还要在上面进行交互,业务处理等,那么动态脚本随之产生,表明就是如今还存在的asp 、php、aspnetmvc等。
如今重点讨论asp、php模板引擎、aspnet mvc三者产生的缘由,从而解答上面提出的问题。
asp是微软为了迎合市场推出的动态脚本语言,在自家的IIS服务器运行。原理也很简单,就是发送url请求后,IIS接收对地址中指定的asp文件进行编译,把里面的asp脚本代码转换为html代码再返回给浏览器。这样咱们经过编写asp脚本就能够实现与前端的交互了,可是后来发现编写这种动态脚本是很痛苦的,调试麻烦,代码阅读性差,功能很差重用等。要解决这个问题就得把界面代码与动态脚本代码进行分离,那么就出现了模板引擎、MVC等程序结构。
我的以为看php代码就是要先弄清楚代码中使用了什么样的模板引擎,把这个弄清楚后下面的代码就很顺畅了,否则总感受云里雾里,找不到程序的脉络。
以为MVC应该是在模板引擎以后出现的,模板引擎只是解决了后台业务代码与前台界面代码直接的分离,而MVC对这些内容作了更明确的定义,把前台界面代码定义为View、后台业务代码定义为Model、再就是对界面的交互控制用Controller来处理。因此MVC成为了现在开发大一点的web系统的主流框架;
咱们从语言谈到了程序结构,这跟咱们想说明的REST又有什么关系了?
颇有关系,前面我说html时代实际上是彻底符合REST思想的,而到后面的asp、php、mvc就反而脱离了REST思想了。REST要达到组件化的目的,资源必须惟一标识,而动态语言,更确切的说是模板引擎、MVC彻底打破了这种原则,由于他们是从业务功能的角度来设计程序的,这种设计使资源的访问动态化了,而这种动态的规则又只有程序设计者清楚,因此要想把这种功能组件化是不可能的;而如今Web系统原来越多,也离当初的设想原来越远因此从新提出REST这个概念,让咱们不要在岔路上越走越远;web
总结:系统组件化在桌面时代一直没可以实现,而在互联网时代是彻底有可能成功的,由于互联网的精神就是“开放、平等、协做、分享”。浏览器
本文章只是一个即兴所想,拿出来和你们分享一下,里面的观点不必定正确,请你们指正~~服务器
整过过程就是这样的,互联网刚开始的时候仍是符合REST的,随着动态脚本的技术发展,设计的程序原来越偏离REST,因此如今从新提出REST,但不可能回到老路,那么就要把如今MVC技术改造为支持REST的一种新架构。网络