有一种设计风格叫RESTful

有一种设计风格叫RESTful

大家好,又见面了,我是全栈君。

一 前言

刚看了《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核心模式》里面的话,“模式是总结出来的”。也正解释了为什么我们不知道这样的模式但平时却在用了,由于这些模式风格也是大师做多了经验多了总结出来的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115865.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【永久一次性解决】github访问慢[通俗易懂]

    【永久一次性解决】github访问慢[通俗易懂]一次性解决

    2022年7月16日
    13
  • Macbook OBS 录制系统声音

    Macbook OBS 录制系统声音安装好OBS软件下载并安装soundflower软件,也可以在GitHub中下载打开midi音频设置构建多输出设备例如,我现在是带着外置耳机,并且录制系统声音,那么多输出设备就勾选这两个配置完成后,我们可以右键选择该设备用于声音输出最后在OBS软件中选择桌面音频即可,点击Soundflower…

    2022年5月27日
    53
  • JAVA Exception和IOException之间的使用区别

    JAVA Exception和IOException之间的使用区别使用Exception可以保证捕获异常后能继续维持JVM的运行如果Exception换成IOException后,一旦出现IO异常,便会捕获停止运行.“IoException“(流异常,通常用在文件读取中)是”Exception”(用在所有的异常处理中)的一个分支,也就是说“Exception”的范围更大。解释:通过java中在捕获异常的时候需要先捕获“子异常”(范围小,如流异常),之……

    2022年7月16日
    9
  • 人性的弱点

    1.与人相处的基本技巧永远不要尖锐地斥责别人斥责百害无一利,控制自己或则试着帮助他真诚地赞美他人激发他人的强烈需求2.如何让他人喜欢你真诚地关心他人微笑待人记住他人的名字善于倾听

    2021年12月30日
    25
  • JAVA卸载与安装

    JAVA卸载与安装卸载JDK1、删除Java的安装目录电脑-属性-高级系统设置-环境变量-JAVA_HOME的值就是放主程序的目录,删掉2、删除环境变量里的JAVA_HOME电脑-属性-高级系统设置-环境变量-JAVA_HOME这一行删除3、删除path下关于Java的目录电脑-属性-高级系统设置-环境变量-path中删掉跟JAVA_HOME相关的4、Java-versionwin+rcmdJava-version找不到命令安装JDK1,百度搜索JDK8,找到下载地址2、

    2022年5月12日
    34
  • 详解Java中的Spring框架

    详解Java中的Spring框架详解Spring什么是SpringSpring的优点Bean容器Bean的注解Bean属性Bean作用域Bean的生命周期Bean的实例化IoC(InversionofControl)和DI(DedendencyInjection)IoC(控制反转)DI(依赖注入)AOP什么是SpringSpring是分层的JavaSE/EEfull-stack轻量级开源框架,以IoC(InverseofControl,控制反转)和AOP(AspectOrientedProgramming

    2022年7月7日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号