有一种设计风格叫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)
上一篇 2022年1月29日 下午3:00
下一篇 2022年1月29日 下午3:00


相关推荐

  • 企业微信三方应用开发(二)授权开通及登录流程(第三方登录流程)

    据微信开放平台“开发资源”中网站应用微信登陆功能开发指南描述:进行授权登陆接入前,需要先注册一个开发者账号,并拥有一个已经审核通过的网站应用,并获取AppID和APPSecret,然后申请微信登陆并通过审核后,可以接入流程进行开发。据开发者资质认证处介绍:开发者资质认证通过后,微信开放平台帐号下的应用,将获得微信登录、智能接口、第三方平台开发等高级能力。所以在微信第三方授权登陆获取用户信息…

    2022年4月15日
    467
  • fastjson jsonobject转map对象_jsonobject遍历

    fastjson jsonobject转map对象_jsonobject遍历原标题:jsonobject转map对象我们在开发嵌套数据的时候,有时会返回jsonobject数据,这是因为进行的是url访问,但是这个过程可能会出现异常,因此我们需要将jsonobject转map对象使用。本文将向大家介绍jsonobject转map对象的实现方法。1、依赖于jar包,使用json-lib包进行转换。相关jar包jakartacommons-lang2.5jakarta…

    2022年8月23日
    13
  • notepad++注释快捷键[通俗易懂]

    notepad++注释快捷键[通俗易懂]notepad++注释快捷键快捷键如下:单行、多行注释//方式:ctrl+k区块注释/**/方式:ctrl+q取消单行、多行、区块注释:ctrl+shift+k…

    2022年5月26日
    409
  • Apache配置反向代理

    Apache配置反向代理为了让自己的 springboot 项目能被域名直接访问 而不是 IP 端口号的形式访问 需要用到反向代理 简单来讲就是把一个程序运行的地址映射到域名上 实现直接用域名访问 网上很多教程都是针对 nignx 的 而我用的是 apache 也不想折腾把 apache 换成 nignx 找了很久才找到一个可以用的 这里记录一下 方便下次使用

    2025年8月3日
    11
  • xampp服务器默认配置文件,服务器xampp安装教程与配置

    xampp服务器默认配置文件,服务器xampp安装教程与配置服务器 xampp 安装教程与配置内容精选换一换华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API 参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API 参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 服务器 xampp 安装教程与配置相关内容在存放数据源文件的

    2026年3月18日
    2
  • 工具杂记-notepad++正则表达式匹配替换

    工具杂记-notepad++正则表达式匹配替换这里其实是这样的就是有时候我们建表不规范,导致idea自动生成的实体类有bug。get/set后面的字母为小写,这样但要使用反射的时候。就会出现问题。找不到这个方法。这里我们可以通过使用notepad++用正则表达式进行替换。这是一个很好的工具:这里可以替换文件夹里面所有文件。这里我以单个文件为例:如下点击repalceAll即可替换运行后结果如下:…

    2022年5月17日
    39

发表回复

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

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