REST首次出现在 2000 年 Roy Fielding 的博士论文中的一种软件架构风格。可以降低开发的复杂性,提高系统的可伸缩性。
REST中可以命名的任何信息都可以是资源,如user、order等,通常表示Web服务中要操作的一个实体。一个资源具有统一的URI,通过URI能够标识并访问资源。
REST定义了6个约束,符合这些约束的web服务才能成为REST风格的服务。
1.客户端—服务器
服务端与客户端独立实现并独立开发,只要接口不改变即可。提高跨多个平台的用户接口的可移植性并提高可伸缩性。
2.统一接口
系统中的多个组件都依赖于统一接口,包含4个子约束:
3.分层系统
服务端和客户端不知道网络中介(代理或网关等)的存在,增强安全、负载均衡和响应缓存等。
4.缓存
客户端和网络中介都可以缓存服务器返回的响应,以便于减少数据获取延迟和服务器的请求次数,提高系统性能。
5.无状态
服务器不会记录或存储客户端的状态信息。从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上任何存储的上下文。
6.按需编码(可选)
允许服务器临时向客户端返回可执行的程序代码用于客户端拓展和自定义功能,简化客户端。