news 2026/9/6 4:31:35

RESTful 风格详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RESTful 风格详解

一、相关概念

1、API(应用程序接口)概念

API(Application Programming Interface)是一些预先定义的函数,或者指软件系统不同组成部分衔接的约定。简单来讲就是两种类型:一种是jar包,A将B需要的程序全部打包给B,B可以直接使用。另一种就是WEB应用接口,A需要B的部分功能,只需要B将对外访问路径提供给A,A按照约定的访问方式进行访问.

2、RESTful 风格

REST是一种组织Web服务的架构 ,因其具有简单、易读、易用的特点,在 web 项目中非常受欢迎,在设计接口时,如果满足 res 约束条件和原则的应用程序设计或设计就称为 RESTflu 应用.

二、RESTful接口设计

2.1 路径设计

传统请求路径:见名知意.

RESTful 风格:由操作的资源决定,一般采用资源名称复数形式,例如:/users.

补充说明:

R(Resources)表明了资源在RESTful的重要性,在RESTful的眼中,互联网的一切都是资源,都有其唯一标识(URI:资源定位符).

2.2 请求方式

传统请求方式:一般会忽略.

RESTful 风格:

RESTful 风格在 HTTP 请求方法做好了约定,增(POST)、删(DELETE)、改(PUT)、查(GET)如下:

1、GET(SELECT):从服务器中取出资源(一项/多项).

2、POST(CRATE):在服务器新建一个资源.

3、PUT(UPDATE):在服务器中更新资源(客户端提供改变后的完整资源),PUT 更新整个对象.

4、PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性), PATCH 更新个别属性.

5、DELETE(DELETE):从服务器中删除资源.

//下面的了解即可

6、HEAD:获得一个资源的元数据,比如一个资源的 hash 值或最后的修改日期.

7、OPTIONS:获得客户端针对一个资源能够实施的操作.

2.3 请求参数和响应

请求参数:

传统风格:由需求决定.

RESTful 风格:由需求决定.

请求响应:

传统风格:由需求决定/模板路径

RESTful 风格:由需求/公司规范决定,一般建议响应数据格式是 JSON 格式.

RESTful 对响应值做出了较为细致的约定,如下:

GET/collection:返回资源对象的列表(数组).

GET/collection/resource:返回单个资源对象.

POST/collection:返回新生成的资源对象.

PUT/collection/resource:返回完整的资源对象.

PATCH/collection/resource:返回完整的资源对象.

DELETE/collection/resource:返回一个空文档.

注意:以上数据返回全部采用 JSON 格式.

2.4 扩展 — HTTP 响应状态码

信息响应 (100199)

常见的响应码及其含义

100:这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它.

101:该代码是响应客户端的 Update 请求头发送的,指明服务器即将切换的协议.

102:此代码表示服务器已收到并正在处理该请求,但当前没有响应可用.

103:此状态代码主要用于与 Link 链接头一起使用,以允许用户代理在服务器准备响应阶段时开始预加载 Preloading 资源.

成功响应 (200299)

常见的响应码及其含义

200:请求成功。成功的含义取决于 HTTP 方法.

GET: 资源已被提取并在消息正文中传输.

HEAD: 实体标头位于消息正文中.

PUTorPOST: 描述动作结果的资源在消息体中传输.

TRACE: 消息正文包含服务器收到的请求消息.

201:该请求已成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应.

202:请求已经接收到,但还未响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理.

203:服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集.

204:对于该请求没有的内容可发送,但头部字段可能有用。用户代理可能会用此时请求头部信息来更新原来资源的头部缓存字段.

205:告诉用户代理重置发送此请求的文档.

206:当从客户端发送Range范围标头以只请求资源的一部分时,将使用此响应代码.

207:对于多个状态代码都可能合适的情况,传输有关多个资源的信息.

208:在 DAV 里面使用<dav:propstat>响应元素以避免重复枚举多个绑定的内部成员到同一个集合.

226:服务器已经完成了对资源的GET请求,并且响应是对当前实例应用的一个或多个实例操作结果的表示.

重定向响应(300399)

常见的响应码及其含义

300:请求拥有多个可能的响应。用户代理或者用户应当从中选择一个.

301:请求资源的 URL 已永久更改。在响应中给出了新的 URL.

302:此响应代码表示所请求资源的 URI 已暂时更改.

303:服务器发送此响应,以指示客户端通过一个 GET 请求在另一个 URI 中获取所请求的资源.

304:这是用于缓存的目的。它告诉客户端响应还没有被修改,因此客户端可以继续使用相同的缓存版本的响应.

305:在 HTTP 规范中定义,以指示请求的响应必须被代理访问。由于对代理的带内配置的安全考虑,它已被弃用.

306:此响应代码不再使用;它只是保留.

307:服务器发送此响应,以指示客户端使用在前一个请求中使用的相同方法在另一个 URI 上获取所请求的资源.

308:这意味着资源现在永久位于由Location:HTTP Response 标头指定的另一个 URI.

客户端错误响应 (400499)

常见的响应码及其含义:客户端错误响应

400:由于被认为是客户端错误,服务器无法或不会处理请求.

401:用户没有权限.

403:用户得到权限,但是访问被禁止.

404:用户发出的请求针对的是不存在的记录,服务器没有进行操作.

406:用户请求的格式不可得.

410:用户请求的资源被永久删除,不会再得到.

422:当创建一个对象时出现验证错误.

服务端错误响应 (500599)

常见的响应码及其含义:服务端错误响应

500:服务器遇到了不知道如何处理的情况.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 4:30:02

软件项目版本封存指南:从代码标记到最终发布的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 4:27:58

基于腾讯云与AI Skills的智能Agent实战:从架构到部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 4:23:14

主从复制与Redis集群深度对比:从数据分片到水平扩展的架构演进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 4:23:09

推荐系统GPU优化:变长序列处理的三条路线与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 4:20:12

2026年iOS开发平台选型指南:原生、跨平台与低代码如何选?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 4:19:08

混合大模型架构实战:多Agent协同、模型路由与高可用体系搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华