<small id='1LfxTXzR37'></small> <noframes id='aTjgd'>

  • <tfoot id='miw7Xu'></tfoot>

      <legend id='nNuSg9cFA'><style id='05wrEP'><dir id='b7C0PAtKf'><q id='q346'></q></dir></style></legend>
      <i id='aYzvC'><tr id='mWSDesVJB'><dt id='rSu4iecP6K'><q id='ie9s'><span id='KaJPVNE'><b id='YWxMvz'><form id='bkYDRm9cl'><ins id='ZPjkByM90'></ins><ul id='zlNA7pifX5'></ul><sub id='8tpfC0q1Ly'></sub></form><legend id='nMyxk'></legend><bdo id='wyVjqBAfS'><pre id='NaAJr0Tv'><center id='B6r9Dq'></center></pre></bdo></b><th id='BlAE4'></th></span></q></dt></tr></i><div id='AYIdBmJ2or'><tfoot id='OPa6t3bT9'></tfoot><dl id='GLVOB6bSY5'><fieldset id='4fil'></fieldset></dl></div>

          <bdo id='FCqX4hIA1'></bdo><ul id='X6ipw'></ul>

          1. <li id='dmylnOG3E'></li>
            登陆

            这才是真实了解RESTful架构的正确方法

            admin 2019-05-21 328人围观 ,发现0个评论

            越来越多的人开端意识到,网站即软件,而且是一种新式的软件。

            这种"互联网软件"选用客户这才是真实了解RESTful架构的正确方法端/服务器办法,建立在分布式体系上,经过互联网通讯,具有高延时(high latency)、高并发等特色。

            网站开发,完全能够选用软件开发的办法。可是传统上,软件和网络是两个不同的领域,很少有交集;软件开发首要针对单这才是真实了解RESTful架构的正确方法机环境,网络则首要研讨体系之间的通讯。互联网的鼓起,使这才是真实了解RESTful架构的正确方法得这两个领域开端交融,现在咱们有必要考虑,怎么开发在互联网环境中运用的软件。

            RESTful架构,便是现在最盛行的一种互联网软件架构。它结构明晰、契合规范、易于了解、扩展便利,所以正得到越来越多网站的选用。

            可是,究竟什么是RESTful架构,并不是一个简单说清楚的问题。下面,我就谈谈我了解的RESTful架构。

            一、来源

            REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。

            Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的首要规划者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经宣布,就引起了重视,而且立即对互联网开发产生了深远的影响。

            他这样介绍论文的写作意图:

            "本文研讨计算机科学两大前沿----软件和网络----的交叉点。长期以来,软件研讨首要重视软件规划的分类、规划办法的演化,很少客观地评价不同的规划挑选对体系行为的影响。而相反地,网络研讨首要重视体系之间通讯行为的细节、怎么改善特定通讯机制的体现,常常忽视了一个现实,那便是改动应用程序的互动风格比改动互动协议,对全体体现有更大的影响。我这篇文章的写作意图,便是想在契合架构原理的前提下,了解和评价以网络为根底的应用软件的架构规划,得到一个功用强、性能好、适合通讯的架构。"

            二、称号

            Fielding将他对互联网软件的架构准则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"体现层状况转化"。

            假如一个架构契合REST准则,就称它为RESTful架构。

            要了解RESTfu这才是真实了解RESTful架构的正确方法l架构,最好的办法便是去了解Representational State Transfer这个词组究竟是什么意思,它的每一个词代表了什么寓意。假如你把这个称号搞懂了,也就不难领会REST是一种什么样的规划。

            三、资源(Resources)

            REST的称号"体现层状况转化"中,省掉了主语。"体现层"其实指的是"资源"(Resources)的"体现层"。

            所谓"资源",便是网络上的一个实体,或许说是网络上的一个详细信息。它可所以一段文本、一张图片、一首歌曲、一种服务,总归便是一个详细的真实。你能够用一个URI(一致资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,拜访它的URI就能够,这才是真实了解RESTful架构的正确方法因而URI就成了每一个资源的地址或绝无仅有的辨认符。

            所谓"上网",便是与互联网上一系列的"资源"互动,调用它的URI。

            四、体现层(Representation)

            "资源"是一种信息实体,它能够有多种外在体现办法。咱们把"资源"详细出现出来的办法,叫做它的"体现层"(Representation)。

            比方,文本能够用txt格局体现,也能够用HTML格局、XML格局、JSON格局体现,乃至能够选用二进制格局;图片能够用JPG格局体现,也能够用PNG格局体现。

            URI只代表资源的实体,不代表它的办法。严格地说,有些网址最终的".html"后缀名是不必要的,由于这才是真实了解RESTful架构的正确方法这个后缀名表明格局,归于"体现层"领域,而URI应该只代表"资源"的方位。它的详细体现办法,应该在HTTP恳求的头信息顶用Accept和Content-Type字段指定,这两个字段才是对"体现层"的描绘。

            五、状况转化(State Transfer)

            拜访一个网站,就代表了客户端和服务器的一个互动进程。在这个进程中,必然涉及到数据和状况的改变。

            互联网通讯协议HTTP协议,是一个无状况协议。这意味着,一切的状况都保存在服务器端。因而,假如客户端想要操作服务器,有必要经过某种手法,让服务器端发作"状况转化"(State Transfer)。而这种转化是建立在体现层之上的,所以便是"体现层状况转化"。

            客户端用到的手法,只能是HTTP协议。详细来说,便是HTTP协议里边,四个表明操作办法的动词:GET、POST、PUT、DELETE。它们别离对应四种根本操作:GET用来获取资源,POST用来新建资源(也能够用于更新资源),PUT用来更新资源,DELETE用来删去资源。

            六、总述

            归纳上面的解说,咱们总结一下什么是RESTful架构:

            (1)每一个URI代表一种资源;

            (2)客户端和服务器之间,传递这种资源的某种体现层;

            (3)客户端经过四个HTTP动词,对服务器端资源进行操作,完成"体现层状况转化"。

            七、误区

            RESTful架构有一些典型的规划误区。

            最常见的一种规划过错,便是URI包括动词。由于"资源"表明一种实体,所以应该是名词,URI不该该有动词,动词应该放在HTTP协议中。

            举例来说,某个URI是/posts/show/1,其间show是动词,这个URI就规划错了,正确的写法应该是/posts/1,然后用GET办法表明show。

            假如某些动作是HTTP动词表明不了的,你就应该把动作做成一种资源。比方网上汇款,从账户1向账户2汇款500元,过错的URI是:

            POST /accounts/1/transfer/500/to/2

            正确的写法是把动词transfer改成名词transaction,资源不能是动词,可是可所以一种服务:

            POST /transaction HTTP/1.1 Host: 127.0.0.1 from=1&to=2&amount=500.00

            另一个规划误区,便是在URI中参加版别号:

            http://www.example.com/app/1.0/foo

            http://www.example.com/app/1.1/foo

            http://www.example.com/app/2.0/foo

            由于不同的版别,能够了解成同一种资源的不同体现办法,所以应该选用同一个URI。版别号能够在HTT养老保险缴费标准P恳求头信息的Accept字段中进行区别(拜见Versioning REST Services):

            Accept: vnd.example-com.foo+json; version=1.0

            Accept: vnd.example-com.foo+json; version=1.1

            Accept: vnd.example-com.foo+json; version=2.0

            (完)

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP