Restful的多少个真相ca88手机版登录网页

一切阅读都是误读。

1:rest的原故 REST即表述性状态传递(英文:Representational State
Transfer,简称REST)

推荐介绍阅读《Architectural Styles and
the Design of Network-based Software
Architectures》,要是你早就读过那篇小说,下边包车型大巴内容就绝不看啦。

ca88手机版登录网页 1

Http的缩写

我们先看看维基百科上的解说

我们再看一下单词Transfer的粤语翻译

transfer
英 [trænsˈfɜ:(r)]  美 [trænsˈfɚ] 
vt.
使转移;使调动;转让(权利等);让与
vi.
转让;转学;转乘;转会(尤指职业足球队)
n.
转移;调动;换乘;(运动员)转会

很不难察觉,单词Transfer常有没有传输的含义,维基百科汉语版的翻译完全是漏洞百出的。如若那么些还不曾丰裕的说服力,那么,大家看看Fielding学士的杂谈《Architectural
Styles and
the Design of Network-based Software
Architectures》,小说中等专业学校门提到,“HTTP
不是一种传输协议”。点击那里查看原作,
上面是章节节选

6.5.3 HTTP is not a Transport Protocol

HTTP is not designed to be a transport protocol. It is a transfer protocol in which the messages reflect the semantics of the Web architecture by performing actions on resources through the transfer and manipulation of representations of those resources. It is possible to achieve a wide range of functionality using this very simple interface, but following the interface is required in order for HTTP semantics to remain visible to intermediaries.

便是不幸, HTTP商谈刚刚传入小编国时, 即被翻译为“超文本传输协议”,
明显是谬误的,之后道听途说就进一步贻害无穷, 这里应该翻译为超文本转移协议,
和状态机的事态转移应该是同四个意思

此处写图片描述

先有Http,后有Restful?

想要知道Restful是何等东东,最好的法门是明白一下它的提高历史。从Ruby on
Rails的上进历程足以发现部分踪影。

Ruby on Rails 1.1: ActionWebService

在笔者看来,Fielding这篇博士论文在Web发展史上的价值,不亚于Web之父Tim Berners-Lee关于超文本的那篇经典论文。然而遗憾的是,这篇博士论文在诞生之后的将近5年时间里,一直没有得到足够的重视。例如Web Service相关规范SOAP/WSDL的设计者们,显然不大理解REST是什么,HTTP/1.1究竟是一个什么样的协议、为何要设计成这个样子。

摘自 http://www.infoq.com/cn/articles/understanding-restful-style/

Ruby on Rails 1.2: ActionResource

直到2005年,随着Ajax、Rails等Web开发技术的兴起,在Web开发技术社区掀起了一场重归Web架构设计本源的运动,REST架构风格得到了越来越多的关注。在2007年1月,支持REST开发的Ruby on Rails 1.2版正式发布,并且将支持REST开发作为Rails未来发展中的优先内容。Ruby on Rails的创始人DHH做了一个名为“World of Resources”的精彩演讲,DHH在Web开发技术社区中的强大影响力,使得REST一下子处在Web开发技术舞台的聚光灯之下。

摘自 https://blackanger.gitbooks.io/tao-of-chef/content/chapter_5_rails/restful.html

Ruby on Rails 现状

稍早的版本的Rails中提供了ActionWebService作为开发XML-RPC和SOAP的web服务的基础。但是最近的Rails 1.2更加倾向于是用REST方式的web服务,而ActionWebService在Rails 2.0中作为plugin而不再是rails核心的一部分。

多数人影像中,都觉着restful只是http协议的一种选拔风格,原因也许是豪门先接触到的http,而后才打听到restful。很肯定,这是荒唐的概念,实际上,正式由于有rest架构的方法论教导着http协议正式的制定和升高,Web才有了今日巨大的姣好

通俗点说:能源在网络中以某种表现方式实市场价格况转移。
源于REST之父 罗伊 托马斯 Fielding 三千年的一篇硕士散文。
Fielding是二个不胜关键的人,他是HTTP协议(1.0版和1.1版)的首要性设计者、Apache服务器软件的作者之壹 、Apache基金会的首先任主席。
所以,他的那篇散文一经刊载,就挑起了关心,并且及时对互连网支付爆发了积厚流光的影响。
翻译随想一段:”我那篇小说的文章目标,就是想在适合架构规律的前提下,通晓和评估以网络为底蕴的选拔软件的架构设计,获得1个效应强、质量好、适宜通讯的架构。”

Restful不是一体

与REST架构风格并行的还有二种框架结构风格

  • 分布式对象(Distributed
    Objects,简称DO)架构实例有CORBA/奔驰G级MI/EJB/DCOM/.NET Remoting等等
  • 远程进程调用(Remote Procedure
    Call,简称SportagePC)架构实例有SOAP/XML-君越PC/Hessian/Flash AMF/DW君越等等

ca88手机版登录网页 2

时间线

  1. 1991年,发布http0.9
  2. REST的率先版开发于 一九九三 年 10 月和 一九九二 年 8 月期间
  3. 1996年,发布http1.0
  4. 三千年,发表http1.1,公布诗歌《Architectural Styles and
    the Design of Network-based Software Architectures》
  5. 2014年,发布http2.0

此处写图片描述

舆论地址: Architectural Styles and the Design of Network-based Software
Architectures
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
ca88手机版登录网页,REST章节: Fielding Dissertation: CHAPTER 5: Representational State
Transfer (REST)
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest\_arch\_style.htm
REST发生的背景?
大家都晓得”东汉”网页都以前端后端融在一块儿的,比如事先的PHP,JSP等。在在此之前的桌面时期难题不大,
可是近来移动网络的向上,各体系型的Client司空见惯,RESTful能够由此一套统一的接口为
Web,iOSAndroid提供劳动。
其它对于广大平台来说,比如Facebookplatform,今日头条开放平台,微信公物平台等,它们不须要有显式的前端,只要求一套提供劳动的接口,
于是RESTful更是它们最好的精选。

ca88手机版登录网页 3

此间写图片描述

2:细说Rest(Representational State Transfer) REST
一种软件架构风格,设计风格而不是行业内部,只是提供了一组安顿条件和束缚原则。
满意这一个约束原则和规则的应用程序或布署就是 RESTful。
Representational
“表现层”省略了主语。其实指的是”能源”(Resources)的”表现层”。
“能源”,正是互连网上的三个实体,大概说是网络上的2个具体音讯。它能够是一段文本、一张图片、一首歌曲、一种服务,总而言之正是二个切实可行的莫过于。
你能够用三个UPRADOI(统一资源定位符)指向它,各个能源对应二个一定的UHavalI。要收获这一个财富,访问它的U汉兰达I就能够,因而U卡宴I就成了每叁个资源的地方或独一无二的识别符。

“能源”是一种消息实体,它能够有八种外在表现格局。我们把”能源”具身体表面现出来的情势,叫做它的”表现层”(Representation)。
比如,文本能够用txt格式表现,也得以用HTML格式、XML格式、JSON格式表现,甚至可以动用二进制格式;图片可以用JPG格式表现,也能够用PNG格式表现。
State Transfer 比如能源的内容和格式都能够看做状态。
假诺客户端想要操作服务器,必须经过某种手段,让服务器端爆发”状态转化”(State
Transfer)。而那种转化是建立在展现层以上的, 所以就是”表现层状态转化”。

客户端用到的手腕,只好是HTTP协议。具体来说,正是HTTP协议里面,多个象征操作格局的动词:GET、POST、PUT、DELETE。
它们各自对应八种基本操作:GET用来收获财富,POST用来新建财富(也足以用来创新能源),PUT用来更新财富,DELETE用来删除能源。

ca88手机版登录网页 4

此间写图片描述

3:REST架构风格的架构约束:
(1)客户-服务器(Client-Server)
通讯只好由客户端单方面发起,表现为呼吁-响应的款型。
(2)无状态(Stateless) 通讯的对话状态(Session
State)应该全套由客户端负责掩护。
(3)缓存(Cache) 响应内容能够在通讯链的某处被缓存,以一字不苟互连网效用。
(4)统一接口(Uniform Interface)
通讯链的零件之间通过统一的接口相互通讯,以升高交互的可知性。
(5)分层系统(Layered System)
通过限制组件的表现(即,各类组件只可以“看到”与其交互的紧邻层),将架设分解为多少品级的层。
(6)按需代码(Code-On-德姆and,可选)
帮助通过下载并履行一些代码(例如JavaApplet、Flash或JavaScript),对客户端的机能拓展扩充。
4:RestFul架构的亮点: 结构清晰、符合标准、易于了然、增添方便。
使异构系统间的通讯变得不难 松耦合
易于测试
(1)浏览器即可作为客户端,仍是能够依赖火狐的插件RestClient。
(2)能够应用Apache的Jemeter。 (3)使用 curl命令行工具
RESTful
的统一筹划方法降低了财富对象设计的自由度,本来你要同时规划指标的处境数据和涉嫌的行为,不太好控制。
而 REST 把 url
里的动词都去掉了,财富对象只剩下零星的二种行为,那样不一致的人更易于设计出大约的东西,
别人看您设计的事物,须求的表明也更少。
回顾性
选取REST架构风格,对于开发、测试、运营职员来说,都会更不难。能够充足利用大量HTTP服务器端和客户端开发库、Web功用测试/品质测试工具、HTTP
缓存、HTTP代理服务器、防火墙。那些开发库和基础设备一度变成了日常用品,不供给什么样火箭科学和技术(例如神奇昂贵的应用服务器、中间件)就能化解一大半可
伸缩性方面包车型大巴难点。
可伸缩性
丰裕利用好通讯链各样岗位的HTTP缓存组件,能够带动更好的可伸缩性。其实过多时候,在Web前端做品质优化,发生的效应不亚于单纯在劳务器端做品质优化,
可是HTTP协议层面包车型客车缓存日常被部分远近驰名的架构师完全忽略掉。
松耦合
统一接口+超文本驱动,带来了最大限度的松耦合。允许服务器端和客户端程序在十分大范围内,相对独立地向上。对于规划面向集团内网的API来说,松耦合并不
是贰个很要紧的筹划关心点。然而对于规划面向互连网的API来说,松耦合变成了叁个必选项,不仅在统一筹划时应当关注,而且应该置身最优先地点。
5:REST与Jersey和JAX-福睿斯S的涉嫌 Rest是一种架构风格。
Jersey是对JAX-RAV4S的一种达成。
JAX-福睿斯S(javaAPI
for RESTful Web
瑟维斯s)是一套用Java福寿康宁REST服务的标准

ca88手机版登录网页 5

那边写图片描述

6:U昂CoraL设计 不好的宏图: /getProducts /createProducts /getProducts?proId=4
/updayeProduct?proId=4 /deleteProduct?proId=4
淡雅的筹划 GET /products POST /products GET /products/4 PUT /products/4
DELETE /products/4
专注什么? (1):U揽胜极光I使用名词而不是动词,且推荐用复数。
(2):2个U福睿斯I标识一个财富,可是二个能源得以被多少个U大切诺基I标识。
(3):财富也是有层次的,那一个层次应该在U君越I上充足的反映出来。
GET /cars/711/drivers/ 再次回到 car 711的具备司机
GET /cars/711/drivers/4 返回 car 711的4号司机
(4):必要有3个ULANDI定义的文书档案,以备以往的询问和保卫安全。
(5):合理施用http状态码
(6):规范再次回到结果格式 { errorCode: “401”, errorMsg: “Unauthorized”
data :data
} (7):服务器重回的数据格式,应该尽大概采纳JSON,制止选取XML。
一句话来说: 看ULX570L就精晓要什么 看Http method就知道要怎么 和Http status
code就知道结果什么
7:怎么着单元测试 (1):浏览器地址栏(GET) (2):火狐的RestClient
(3):Jmeter (4):Curl命令行工具
参照文档:
http://www.ruanyifeng.com/blog/2011/09/restful.html
http://blog.csdn.net/column/details/restful.html

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图