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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python可视化图表(python 显示图片)

    目录一、fig,ax=plt.subplots()的作用?二、参数的含义?三、怎么在一个图上排列多个子图?四、怎么把多个子图一起合并到一个图上?《PythonforDataAnalysis》2ndEdition一、fig,ax=plt.subplots()的作用?它是用来创建总画布/figure“窗口”的,有figure就可以在上边(或其中一个子…

  • Silverlight 引路蜂二维图形库示例:虚线类型

    Silverlight 引路蜂二维图形库示例:虚线类型

  • 测试用例编写_功能测试用例自动生成

    测试用例编写_功能测试用例自动生成前言写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。har2case我们先来了解一下另一个项目har2case他的工作原理就是将当前主流的抓

  • python和pythoncharm有什么区别_python为什么叫爬虫

    python和pythoncharm有什么区别_python为什么叫爬虫pycharm和python区别1、首先它们的下载地址和安装的方式不同;2、python是一种基本编译环境,就像java和jar一样。pycharm是一种集成开发环境,为了能够让你快速编写代…

  • CPU C-state & cpuidle driver[通俗易懂]

    CPU C-state & cpuidle driver[通俗易懂]1.什么是C-states、C-mode?为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intelCPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式”低功耗模式最初是在486DX4处理器中引入的。到目前为止,已经引入了更多的功耗模式,并且对每种模式进行了增强,以使CPU在这些低功耗模式下消耗更少的功率。CPU的每个状态都使用不同的电量,并且对应用程序性能的影响也不同。每当CPU内核处于空闲状态时,内置的节能逻辑就会启动,并尝试将内核从当前

    2022年10月27日
  • 激活成功教程quartus ii13.0_quartus ii 13.0安装

    激活成功教程quartus ii13.0_quartus ii 13.0安装文章目录一、QuartusII的下载二、QuartusII的安装三、QuartusII的激活成功教程1.下载激活成功教程器文件2.激活成功教程器的使用一、QuartusII的下载百度网盘下载链接:https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA提取码:ifte说明:本链接来自于正点原子官方资料下载二、QuartusII的安装解压后双击运行exe文件:点击next:勾选“Iaccepttheagreement”,然后点击Next:

    2022年10月10日

发表回复

您的电子邮箱地址不会被公开。

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