REST 是英文 Representational State Transfer 的缩写,这个术语由 Roy Thomas Fielding 博士在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出。从这篇论文的标题可以看出:REST 是一种基于网络的软件架构风格。
REST 架构是针对传统 Web 应用提出的一种改进,是一种新型的分布式软件设计架构。对于异构系统如何进行整合的问题,目前主流做法都集中在使用 SOAP、WSDL 和 WS-* 规范的 Web Services。而REST架构实际上也是解决异构系统整合问题的一种新思路。
相较于基于SOAP和WSDL的Web服务,REST 模式提供了更为简洁的实现方案。目前,越来越多的 Web 服务开始采用 REST 风格设计和实现,真实世界中比较著名的 REST 服务包括:Google AJAX 搜索 API、Amazon Simple Storage Service (Amazon S3)等。
Rest原则:
如果开发者在开发过程中能坚持 REST 原则,将可以得到一个使用了优质 Web 架构的系统,从而为系统提供更好的可伸缩性,并降低开发难度。关于 REST 架构的主要原则如下:
- 网络上的所有事物都可被抽象为资源(Resource)。
- 每个资源都有一个唯一的资源标识符(Resource Identifier,所有的“事物”对应唯一的资源标识,并且通过标识可以获取该“事物”)。
- 同一资源具有多种表现形式(ATOM、XML、JSON)。
- 使用标准方法操作资源(HTTP 的 POST,GET,PUT, DELETE等方法)
- 通过缓存来提高性能。
- 对资源的各种操作不会改变资源标识符。
- 所有的操作都是无状态的(Stateless,服务端不保存客户端的信息,从而提高系统的容错性和伸缩性)。