spring 的REST风格是什么

spring 的REST风格是什么spring 的REST风格是什么

大家好,又见面了,我是你们的朋友全栈君。

作者:Wall·E
链接:https://www.zhihu.com/question/33959971/answer/58671683
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先,REST是一种规范:

  • 强调HTTP应当以资源为中心,并且规范了资源URI的风格;
  • 规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义;

遵循REST规范的Web应用将会获得下面好处:

  • URL具有很强可读性的,具有自描述性;
  • 资源描述与视图的松耦合;
  • 可提供OpenAPI,便于第三方系统集成,提高互操作性;
  • 如果提供无状态的服务接口,可提高应用的水平扩展性;

 

下面再详细说明一下REST。了解事物,分三步走:

【基本概念】
REST是一种软件架构模式。核心概念包括:

资源(Resource):在REST中,资源可以简单的理解为URI,表示一个网络实体。比如,/users/1/name,对应id=1的用户的属性name。
既然资源是URI,就会具有以下特征:名词,代表一个资源;它对应唯一的一个资源,是资源的地址。

表现(Representation):是资源呈现出来的形式,比如上述URI返回的HTML或JSON,包括HTTP Header等;

【实践】
怎么用呢?不同的Server端框架提供了各种解决方案。比如JavaEE中的开箱即用的Spring-MVC。
但实践过程中,你自然会碰到一些需要思考的问题:
1)如何定义资源:一般对应数据库实体(在传统的关系型数据库中)。
2)需要对HTTP协议更多的理解
URL格式:协议://域名/路径?查询#HASH,实际的一个HTTP请求,还会包括Header(含Cookie、Method等)

资源的URI格式:协议://域名/路径,它只是URL的子集,表征一个资源实体。比如,http://a.com/users/1

恰当地理解和返回Http Status(状态码)。200=成功,404=资源不存在,500=服务器端错误等等。

3)REST操作
一般资源操作只有新增、删除、查询、更新,对应HTTP协议中四类请求:POST、DELETE、GET、PUT。其中,后三个操作是幂等的。(什么是幂等?)

查询资源时,更多的参数,比如分页、排序、过滤条件,一般都会放在URL的查询部分(Query String)。
新增、更新资源,关于资源实体的内容,一般放在请求体(Request Body)中。

实际发送请求,还需要有动词,表示对该资源执行什么样的操作。那么超出这个范围的操作该如何扩展

REST操作返回什么内容?对于删除、新增、更新等操作,通常是返回操作是否成功的标识;如果失败,需要返回错误代码和消息,方便客户端做进一步处理。如果是查询操作,通常包含实体或者实体列表。
在最佳实践中,应当还应该返回与此操作相关的其他操作。比如,查询得到实体的响应中,应包含该实体的删除、更新操作的地址。

请求和返回的Body,采用什么格式?常见的格式包括XML/JSON/HTML。

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

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

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


相关推荐

  • slam技术原理_SRAM特点

    slam技术原理_SRAM特点SLAM是Simultaneouslocalizationandmapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题,为了让大家更多的了解SLAM,以下将从SLAM的应用领域、SLAM框架、SLAM分类(基于传感器的SLAM分类)来进行全面阐述,本文仅对没有接触过SLAM的新人进行的科普…

    2022年10月1日
    3
  • 轻松学习RSA加密算法原理「建议收藏」

    轻松学习RSA加密算法原理「建议收藏」http://blog.csdn.net/q376420785/article/details/8557266http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html以前也接触过RSA加密算法,感觉这个东西太神秘了,是数学家的事,和我无关。但是,看了很多关于RSA加密算法原理的资料之后,我发现其

    2022年5月1日
    34
  • Centos防火墙设置与端口开放的方法

    Centos防火墙设置与端口开放的方法Centos升级到7之后,内置的防火墙已经从iptables变成了firewalld。所以,端口的开启还是要从两种情况来说明的,即iptables和firewalld。更多关于CentOs防火墙的最新内容,请参考Redhat官网。一、iptables1.打开/关闭/重启防火墙开启防火墙(重启后永久生效):chkconfigiptableson关闭防火墙(重启

    2022年6月15日
    63
  • 我用Python采集了班花的空间数据集,除了美照竟然再一次发现了她另外的秘密![通俗易懂]

    大家好,我是辣条。室友知道了我上次给班花修过电脑,追了我三条街,嘴里大骂我不当人子,怪我这种事情没带他。最后又舔着脸求我支招,这货竟然想追班花!辣条我为了兄弟两(收)肋(钱)插(办)刀(事),毫不犹豫的答应了。但是我只有班花的QQ和微信怎么办呢,那就从她平时发的动态着手,于是就有了这篇文章,不过最后我又发现了她的另一秘密!采集数据目标网址:QQ空间工具使用开发环境:win10、python3.7开发工具:pycharm、Chrome工具包:selenium,re,time.

    2022年4月13日
    39
  • 【CSDN2021年度总结】繁凡的 ACM 退役记(一名普通算法竞赛选手与博主的竞赛生涯回忆录)凡是过往,皆为序章

    【CSDN2021年度总结】繁凡的 ACM 退役记(一名普通算法竞赛选手与博主的竞赛生涯回忆录)凡是过往,皆为序章你好呀,我是繁凡!这里是一名双非ACM弱校的零基础菜鸡算法竞赛选手与博主的竞赛生涯回忆录。

    2022年6月10日
    49
  • Perl正则表达式讲解「建议收藏」

    Perl正则表达式讲解「建议收藏」9.3.1原则1正则表达式有三种形式:匹配、替换和转换。在表 9-1 中列有三种正则表达式运算符。接下来对每一个表达式给出详尽解释。匹配:m//这种形式表明在//内部的正则表达将用于匹配 = ~或 !~左边的标量。为了语法上的简化用//,略去m。替换:s///这种形式表明正则表达式将被文本替换,为了语法的简化用//略去s。·转换:tr///这种形式包含一系列的字符

    2022年5月31日
    68

发表回复

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

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