RESTful是什么,RESTful简介(新手必看)
RESTful 是目前流行的互联网软件服务架构设计风格。REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在 2000 年的博士论文中提出的,它定义了互联网软件服务的架构原则,如果一个架构符合 REST 原则,则称之为 RESTful 架构。
REST 并不是一个标准,它更像一组客户端和服务端交互时的架构理念和设计原则,基于这种架构理念和设计原则的 Web API 更加简洁,更有层次。
符合 RESTful 规范的 Web API 需要具备如下两个关键特性:
假设,原本大家通过 PC 上的网上商城购物,当需要扩展到手机等移动端时,只需要开发针对 iOS 和 Android 的两个客户端,通过客户端访问系统公共的 Web API 就可以完成通过浏览器页面提供的功能,而后端代码基本无须改动,如下图所示。

图 1 RESTful Web API 的框架
如图 1 所示,RESTful 风格的 Web API 支持我们使用统一的接口规范对接 iOS、Android、HTML5 和 PC 等客户端。正是由于 REST 有着众多优点,因此 REST 一经提出就迅速取代了复杂而笨重的 SOAP,成为 Web API 的标准。
SOAP(Simple Object Access Protocol,简单对象访问协议)是一种标准化的通信规范,主要用于 Web 服务。它有着严格的规范和标准,包括安全、事务等各个方面的内容,同时 SOAP 强调操作方法和操作对象的分离,使用 WSDL 文件规范和 XSD 文件分别对其定义。
RESTful 简化了 WebService 的设计,它不再需要 WSDL,而是通过最简单的 HTTP 协议传输数据(包括 XML 或 JSON)。既简化了设计,也减少了网络传输量(因为只传输代表数据的 XML 或 JSON,没有额外的 XML 包装)。REST 强制所有的操作都必须是无状态的,没有上下文的约束,不需要考虑上下文和会话保持的问题,极大地提高系统的可伸缩性。
RESTful 相对于 SOAP 更加简单明了,它并没有一个明确的架构标准,更像是一种设计风格,其核心是面向资源;而 WebService 基于 SOAP 协议,主要核心是面向活动。
移动互联网飞速发展的今天,业务随时都在变化,天然拥抱变化的 RESTful 架构无疑是当前互联网行业 Web 服务架构开发的首选。
REST 并不是一个标准,它更像一组客户端和服务端交互时的架构理念和设计原则,基于这种架构理念和设计原则的 Web API 更加简洁,更有层次。
RESTful的特点
- 每一个 URI 代表一种资源。
- 客户端使用 GET、POST、PUT、DELETE 四种表示操作方式的动词对服务端资源进行操作:GET 用于获取资源,POST 用于新建资源(也可以用于更新资源),PUT 用于更新资源,DELETE 用于删除资源。
- 通过操作资源的表现形式来实现服务端请求操作。
- 资源的表现形式是 JSON 或者 HTML。
- 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都包含必需的信息。
符合 RESTful 规范的 Web API 需要具备如下两个关键特性:
- 安全性:安全的方法被期望不会产生任何副作用。当我们使用 GET 操作获取资源时,不会引起资源本身发生改变,也不会引起服务器状态的改变。
- 幂等性:幂等的方法保证了重复进行一个请求和一次请求的效果相同(并不是指返回客户端的响应总是相同的,而是指服务器上资源的状态从第一次请求后就不再改变)。在数学中,幂等性是指 N 次变换和一次变换的结果相同。
REST的产生背景
随着互联网的发展,前端页面与后端的数据交互越来越频繁,数据结构越来越复杂,REST 的出现极大地简化了前后端数据的交互逻辑。如果我们把前端页面看作一种用于展示的客户端,那么 API 就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。假设,原本大家通过 PC 上的网上商城购物,当需要扩展到手机等移动端时,只需要开发针对 iOS 和 Android 的两个客户端,通过客户端访问系统公共的 Web API 就可以完成通过浏览器页面提供的功能,而后端代码基本无须改动,如下图所示。

图 1 RESTful Web API 的框架
如图 1 所示,RESTful 风格的 Web API 支持我们使用统一的接口规范对接 iOS、Android、HTML5 和 PC 等客户端。正是由于 REST 有着众多优点,因此 REST 一经提出就迅速取代了复杂而笨重的 SOAP,成为 Web API 的标准。
REST与SOAP的区别
随着互联网的发展,RESTful 越来越流行,那么 RESTful 和 SOAP 到底有哪些区别?我们在设计 Web 服务时,到底是应该选择目前最流行的 RESTful 还是选择老牌的 WebService 呢?SOAP(Simple Object Access Protocol,简单对象访问协议)是一种标准化的通信规范,主要用于 Web 服务。它有着严格的规范和标准,包括安全、事务等各个方面的内容,同时 SOAP 强调操作方法和操作对象的分离,使用 WSDL 文件规范和 XSD 文件分别对其定义。
RESTful 简化了 WebService 的设计,它不再需要 WSDL,而是通过最简单的 HTTP 协议传输数据(包括 XML 或 JSON)。既简化了设计,也减少了网络传输量(因为只传输代表数据的 XML 或 JSON,没有额外的 XML 包装)。REST 强制所有的操作都必须是无状态的,没有上下文的约束,不需要考虑上下文和会话保持的问题,极大地提高系统的可伸缩性。
RESTful 相对于 SOAP 更加简单明了,它并没有一个明确的架构标准,更像是一种设计风格,其核心是面向资源;而 WebService 基于 SOAP 协议,主要核心是面向活动。
移动互联网飞速发展的今天,业务随时都在变化,天然拥抱变化的 RESTful 架构无疑是当前互联网行业 Web 服务架构开发的首选。