大家好,又见面了,我是全栈君。
一 前言
刚看了《RESTful Web APIs中文版》。试读了前两章。
每本书的第一章都是抽象得不得了,是整本书的总结;开篇说基础有点简单,从教你怎么向地址栏输入地址訪问网页開始(某人女友还真不会这个),第二章是个简单样例。一度睡着。该书由三个关键词“RESTful “ ”Web “ ”APIs“,貌似废话……可是要把这三个词加起来才是该书的核心。说REST太泛了。说”RESTful uri” 够精确,我相信后面章节也是环绕怎么设计“RESTful uri”来说的。
二 我也来说REST
REST,representational state transfer , 字面理解:表述性状态转移。一时间看不懂?我開始也不懂,正常人怎么会看懂缺少主语宾语的“句子”的意思呢。补全:资源的状态通过浏览器和server之间的交互表述性的数据来改变。
好像把它翻译了一遍,算了无论了。举样例吧,我们server有一本书,它的状态是 id = 1 ,name = “book1” ; 好了,如今 我们HTTP get 它一下。server给我们返回 id = 1 ,name = “book1” 这个状态,这时候我们浏览器也变成状态1了。
如今我要改它的名字为”book2“, 于是我们来HTTP post 它一下,这post 是带參数的(id=1,name=”book2″)用<form>;我们浏览器这时候书是状态2,我们post 到server就是把状态2 “转移”给server。(server怎么处理先无论)结果server变成了状态2。这不就是所谓的状态转移咯。
假设说让你用一句话表达你懂REST , 你会怎么说? 我会说:restful uri 没有动词。 可能大家也知道获取一本书的restful uri 是 “book/1” 而不是“getBook/1”。
由于Rest 把server的东西都叫做资源,一本书是一个资源,实体。那你就会问了。那动作哪去了? 在HTTP 那里。HTTP 有get 方法,这个就是动词。我会告诉你,HTTP还有delete 方法。没了解过的傻眼了吧。
而这本书由重点讲 HTTP 8方法中 的5个。各自是 get head post put delete 。还有,restful uri 没有版本号之说,老实说难道我的书架上的一本书《黑客与画家》还有新和旧之分?
三 谈谈RESTful
符合REST的叫做RESTful。
RESTful 是一种设计风格,而不是标准。标准一定要遵守。风格不遵守也不会错,仅仅是变样了。style , 我玩《鬼泣》的时候就知道什么叫style , 还是问鸟叔比較好? 自己斟酌。
我做过几个web项目,都是用一些功能粘合起来的,uri 也随便来设计,删除一条数据 就用 “deleteBook?id=1”,事实上这个是get请求。不知道这是叫什么。反正肯定不是RESTful。人们总喜欢用Rest 跟 SOAP和XML-RPC 比。说Rest 比后两者好得多了去,后两者不是非常了解啦。
有一点值得我们注意的是,我们平时在开发的时候,用的方式可能就是某种模式/风格。我们学习这样的模式/风格会让我们对开发有更好地理解。而这些模式风格哪里来的呢?我想引用《J2EE核心模式》里面的话,“模式是总结出来的”。也正解释了为什么我们不知道这样的模式但平时却在用了,由于这些模式风格也是大师做多了经验多了总结出来的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115865.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...