restful
今天就先试试这个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 这个就代表了 刚才提过的状态了. 表什么的,也可以这么尝试.
/// 好累啊, 发现连这个东西想讲明白都难.好笨