[解读REST] 1.REST的起源

  • 时间:
  • 浏览:0

理解本真的REST:http://www.infoq.com/cn/articles/understanding-restful-style/

Hypertext and HyperMedia are concepts, not products.

HTTP 1.1 : https://www.ietf.org/rfc/rfc2616.txt

Tim Berners Lee :https://en.wikipedia.org/wiki/Tim_Berners-Lee

hypermedia是web重中之重的一个多多 多角色,原因分析说如此它就如此今天的web也是不为过的。

HyperMedia is a term used for hypertext which is not constrained to be text: it can include graphics, video and sound , for example. Apparently Ted Nelson was the first to use this term too.

随着Web的迅猛发展,只读的HTTP 0.9原因分析无法满足Web的需求了。在1996年HTTP 1.0诞生,最突出的改进在于支持POST来写数据了(基于HTML表单,HTML最初的标准诞生于1993年),使得Web终于“活动”了起来。在HTTP 1.0协议的专家组中,一个多多 多多年轻人脱颖而出,日后成为了HTTP/1.1协议专家组的负责人。这位年轻人却说 Apache HTTP服务器的核心开发者Roy Fielding,Apache软件基金会的合作创始人,也是URI协议的主要设计者,一块儿也参与了HTML的设计。

本篇先开个头,简单介绍一下web的历史,以及REST的诞生时机和环境。里边会逐一解释哪些地方笔者眼中的REST是哪些地方,欢迎有兴趣的前来讨论。

Hypertext is text which is not constrained to be linear.

世界上诞生的第一个多多 多网站:http://info.cern.ch/

HTTP 历史:https://www.w3.org/Protocols/History.html

Fielding在完成HTTP/1.1协议的设计工作日后,回到了加州大学欧文分校继续攻读买车人的博士学位。第二年(2000年)在他的博士学位论文Architectural Styles and the Design of Network-based Software Architectures中,Fielding更为系统、严谨地阐述了这套理论框架,而且使用这套理论框架推导出了你你这个新的架构风格,而且为你你这个架构风格取了一个多多 多令人轻松愉快的名字“REST”——Representational State Transfer(表述性状态转移)。在这篇论文中,Fielding认为Web得以蓬勃发展的原因分析很大程度上得益于Web的整理满足了互联网规模的分布式超媒体系统的需要。而REST,正是Web的架构风格,现代的Web则是REST的一个多多 多架构实例。

大意是说www是一个多多 多为了让全世界都能访问少许文档的一个多多 多的超媒体信息检索计划,其中重点在于其提到的hypermedia。我们看看它为什么会么会解释hypermedia是哪些地方的:

Architectural Styles and the Design of Network-based Software Architectures:https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

Roy Fielding:https://en.wikipedia.org/wiki/Roy_Fielding

哈哈,看起来是都在很酷炫的样子(都需要通过输入数字编号进行链接的跳转)。

在1999年,Tim Berners Lee和Roy Fielding以及HTTP1.1专家组发布了HTTP 1.1版本,主却说 对1.0的有些多余的设计做了有些精简和优化,比如我们现在都需要在一台机器上部署多个网站,而用不同的host请求头来区分,而你你这个host请求头是在1.1才引入的。1.0的日后HTTP协议对网站的假设是基于一个多多 多IP对应一个多多 多网站,从来如此料到日后的一个多多 多ip会部署如此多个web站点。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意需要保留此段声明,且在文章页面明显位置给出原文连接,而且保留追究法律责任的权利。

我们注意看它的第说说:

The WorldWideWeb (W3) is a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.

世界上诞生的第一个多多 多网站-模拟器:http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html

Web的生日:http://home.cern/topics/birth-web

具体的HTTP协议最早是版本0.9,发布与1991年(HTTP 0.9 https://www.w3.org/Protocols/HTTP/AsImplemented.html)。从现在的高度看都需要说是一个多多 多很简陋的协议,只支持GET请求,无request header,也都还可不可以 都还可不可以 用来展示静态文本内容,不对对于当时来说原因分析足够了,毕竟当初Web建立的初衷仅仅是为了在哪些地方地方科学家之间共享文档信息用的。

HTTP 1.1从1999年至今10多年,随着如此雄厚富庞大的web,http1.1的性能问题图片报告 如此凸显出来。日后Google开发了一个多多 多SPDY协议,在TCP和HTTP之间增加了一层,重点在于提示传输性能和增加安全性,而且却强制了采用TLS。在日后制订了新版的http2,借鉴了SPDY中的有些经验,而且移除了对TLS的强制要求,至于为哪些地方,原因分析很简单,你你这个要求违反了REST的有些架构约束(至于违反了哪些地方约束,里边的博客会解释)。

在里边我们提到一个多多 多人:Roy Fielding,他和他的同事们在URI,HTTP1.0和HTTP/1.1协议的设计工作中,对于Web未必取得巨大成功(一块儿面对早期HTTP0.9的糟糕设计),在技术架构方面的因素做了一番深入的分析和总结。Fielding将哪些地方地方总结纳入到了一套理论框架之中,而且使用这套理论框架中的指导原则,用来描述解释Web的架构,以及用来指导哪些地方地方协议的设计。HTTP/1.1协议的第一个多多 多草稿是在1996年1月发布的,经过了三年多时间的修订,于1999年6月成为了IETF的正式规范。用来指导HTTP协议设计的这套理论框架,最初是以备忘录的形式在专家组成员之间交流,除了IETF/W3C的专家圈子,并如此在外界广泛流传。

其中解释了哪些地方是hyperhtext(中有 link的文本内容),又指出了hypermedia是一个多多 多术语,不仅仅指代hypermeida,还都需要包括有些图像,视频,声音等等。hypertext你你这个术语名字并都在由Tim Berners-Lee提出的,却说 在更早的1965年由Ted Nelson第一次提出你你这个概念(hypertext历史)。问你我们对于hypertext你你这个词是都在感觉太熟悉的样子,大名顶顶的HTML(HyperText Markup Language)却说 它的一个多多 多具体实现。hypertext中的link老却说 重中之重,试想原因分析没一个多多 多多多你你这个机制把各种文档联系起来,如此孤零零的有些文本内容是怎样才能却说 会发展出日后的互联网的。

Roy Fielding谈Google SPDY协议:http://www.infoq.com/cn/news/2012/07/roy-on-google-spdy

HTTP 0.9 :https://www.w3.org/Protocols/HTTP/AsImplemented.html

架构风格与基于网络应用软件的整理(中文修订版):http://www.infoq.com/cn/minibooks/web-based-apps-archit-design

1990年12月20日,你你这个天对于现在的互联网来说意义非凡。欧洲核子研究组织(CREN)的科学家Tim Berners-Lee在一台NeXT电脑上启动了世界上的第一个多多 多网站(当然当时仅能Tim Berners-Lee买车人访问),这台电脑至今仍保留在CREN,但当年那个网站原因分析不复占据 了。鉴于你你这个网站的意义重大,CREN在2013年“复刻”了你你这个网站,并指向了一个多多 多多的网址:http://info.cern.ch/。原因分析现在的浏览器早已都在当初的样子,却说 CREN还提供了一个多多 多模拟器来模拟当时浏览你你这个网站是哪些地方状态(http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html),打开后如下:

Hypertext is text which contains links to other texts. The term was coined by Ted Nelson around 1965 (see History ).

Evolution of HTTP:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP