restful

ji posted @ 2014年7月05日 17:31 , 345 阅读

今天就先试试这个REST. 

根据百度百科 REST的概念, 首先这不是个标准, 更多是个风格. 是风格, 那就没有标准可看.  

资料的话, 我找到了

http://www.ruanyifeng.com/blog/2014/05/restful_api.html 讲概念

http://coreymaynard.com/blog/creating-a-restful-api-with-php/ 讲了个小例子

 

开始吧.

 

RESTful . 先说什么是REST, 这是个缩写词. Representational State Transfer  单词我也不认识, 字典上有这么个例句

 

1. His painting went through both representational and abstract periods.
他的绘画经历了具象风格和抽象风格两个阶段。
 
这词是具象, 反面是, 抽象.当然, 汉语里的对仗很奇怪,似乎是个外来词. 干脆说, 叫抽象和具体好了.
 
那这个话,就变成了 具体状态的改变( REST).   RESTful, 也就是  REST范儿, 有这种风格的一种设计.
 
那什么是这种设计,  观看一个事物, 最好就是对比, 来看他的历史. 有REST范儿的设计, 就有非REST范儿的设计.找一个非REST范儿的代表:SOAP
<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/wxyc/login.do">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

大概是什么意思呢,  用这种方法交流的人, 都是有着标准的格式的, A 和 B要交换东西, 就是来回给对方写信. 

信都有固定格式. 先噼里啪啦一阵子寒暄, 然后进入 正文  <req> , 说我今天写信,主要是要借点儿钱

B的回信, 也是这个类型. 先寒暄, 然后, 你要借钱的事儿, 我已经知道了.  然后进入正文是, balabala

 

很标准, 很正式, 而且很有法律效力, 但是特点是, 太累了.正常的交往不应该如此麻烦,借完醋回来,螃蟹都没了.

然后, REST 就是另一种方式.

首先, representational  state 这里当作 具体状态看.    什么是状态呢

"A的钱" 就是个状态, 相应的, "A的表" 等等都是具体的状态.

B  B不再面对, 给A写封信,如何如何, 而且 直接执行,一个个的动作. 

  对, 以前的操作是, 把动作封禁信封里, 交给A 由 A来执行.

 现在 略微有变动.  A 和 B 之间,没有什么交流了.  

  A从一个具体的人,打散,成为了各种各样的状态.

 彼此之间的各种动作, 全部简化, B只能接触到状态, 那么 他可以对 状态,进行的操作,就少的多了. 只有如下七种:

1. GET  POST PUT PATCH DELETE

2. HEAD OPTIONS

   1组是常见的动作, 2组不太常用. 

   B 能 对 状态进行的只有这几种. 

GET: 给我**

  PUT: 放个** POST 也是,但不太一样, 先当成拿刀和拿枪的区别, 以后再解释.

 PATCH: 改改 **

DELETE 好说, 这个只是说, 删掉 **

  HEAD 和OPTIONS 是问话型的,不会造成改变或者别的.等于是问, ** 你到底是什么, 你的内容有哪儿我能改么之类的.

  主谓宾, 发起人 是主,  7个动词是 谓语动词,  状态就是宾语

 大概知道什么是 REST范儿里的 谓语就是这7种了,  主语S和宾语O 都还没说.

 

    S是 动作 动词 Verb 的发起人, 可以是 手机app, 网页浏览器,桌面程序, 等等, 都可以作为S. REST面前,人人平等.  

    O 是 状态, 已经说过了. 也说过 O 是某个东西打散分散化形成的. 这里可以理解为 服务器 SERVER 进行了打散.

  

    SEVER 其实也是一台电脑. 当然, 跟台式机是有区别, 但想成台式机也不为错.  对你来说, 他已经抽象成了一个电脑.什么都行. 然后, 就是他被打散成了状态.

 

   对, 状态,其实都是 SEVER的状态.  SERVER的a, SERVER的b,等等等等, 就跟爱夸自己家孩子的数学好,语文好, 女朋友好, 男朋友也好..等等. 一样.  要表示这个状态, 最简单的方式, 就是沿用惯例. 人们已经有用来区分SEVER的东西了.   ip , 基于 ip 形成了 域名.  

 

   用域名, 后面跟上 字符串 比如  http://api.example.com/money 这个就代表了 刚才提过的状态了. 表什么的,也可以这么尝试.

 

   /// 好累啊, 发现连这个东西想讲明白都难.好笨

   

 

 

 

 

 

 

    

 

    

 

   

 

 

 

 

 

 

 

 

 

 

blog comments powered by Disqus