什么是 REST
REST 是 RoyThomas Fielding 在他 2000 年的博士论文(http://bit.ly/28RW8yv )中提出的, Fielding 将他对互联网软件的架构原则,定名为 REST,即 Representational State Transfer(常见的翻译是“表现层状态转化”)的缩写。
REST 其实省略了主语:资源,表现层实际上指的是资源的表现层。资源是指 Web 上一切可识别、可命名、可找到并被处理的实体。比如 HTML 页面、音频文件、图片等。用一个 URI (统一资源定位符)指向资源,使用 HTTP 请求方法操作资源。URI 可进一步划分为统一资源名(URN,代表资源的名字) 和统一资源定位符(URL,代表资源的地址),其中 URL 可以定位 HTTP 网址、FTP 服务器和文件路径等,符合绝大多数场景,所以一般都可以用 URL 替代 URI。
REST 架构风格最重要的架构约束有如下 5 个。
1.客户端-服务器端。这种 Client/Server 的架构形式提供了基本的分布式,客户端发起请求,服务端决定响应或者拒绝请求,如果出错则返回错误信息,由客户端处理异常。
2.无状态。通信的会话状态应该全部由客户端负责维护,也就是请求中包含了全部必要的信息。如果使用基于服务器端的会话,要么需要保证指定会话会使用同一个服务器响应所有请求,要么得创建一个可供所有服务器访问的公用的会话存储区,对每个请求都额外访问这个集中式的数据存储区获得会话状态。
3.缓存。无状态就表示可能出现重复的请求,事实上这些请求只需要第一次真正的执行,其余的请求都可以享用这个已完成的结果而直接响应,所以缓存可以抵消一部分无状态带来的影响。
4.统一接口。统一接口意味着每个 REST 应用都共享一种通用架构,那些熟悉这种架构的人一眼就能看明白接口的意义,并会继续延承下去。
5.分层系统。将系统划分为几个部分,每个部分负责一部分相对单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。通常可以划分为如下三层。
- 应用层:负责返回 JSON 数据和其他业务逻辑。
- 服务层:为应用层提供服务支持,如全站的账号系统、以及本书实现的文件托管服务等。
- 数据访问层:提供数据访问和存储的服务,如数据库、缓存系统、文件系统、搜索引擎等。
REST 就是这一系列设计约束的集合,如果一个架构符合 REST 原则,就称它为 RESTful 架构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论