什么是REST?
REST是 (Resource) Representational State Transfer 的缩写 (不是英文单词 rest ),直接翻译过来是“表现层状态转移”,但这个名词听了相信一定更加懵逼,所以后面就从作用上论述什么是REST。
REST的作用
REST指的是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是 RESTful, 一般我们使用REST来设计RESTful API。
RESTful架构的设计
资源设计
在REST中有个资源的概念,如网络上的一张图、一种服务、一首歌曲都是一个资源,你可以用URI(统一资源定位符)来指向它,每个资源应对应唯一的一个URI。因此RESTful架构规定网址不能出现动词,只能是名词,这些名词往往是与数据库对应的,所以一般推荐用复数表示。如:
一个网站动物的资源:https://api.example.com/v1/animals
因为有多种动物,所以名词 animals 使用复数。
总结: 每个url代表一种资源. url上不能有动词, 只能是名词,并且一般都和数据库的表名相同,并且是使用复数
动作设计
RESTful 要求统一接口,对每个资源只能执行一组有限的操作。
如 HTTP1.1 协议提供的7个HTTP方法:GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS
这就是 HTTP1.1协议提供的统一接口,这7个方法分别是用来:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(PUT更新整个对象)
PATCH(UPDATE):在服务器更新资源( PATCH更新个别属性 )
DELETE(DELETE):从服务器删除资源。
HEAD:获得一个资源的元数据,比如一个资源的hash值或者最后修改日期;
OPTIONS:获得客户端针对一个资源能够实施的操作;
为什么使用RESTful架构
在早些年网页的开发前后端是高度耦合的,比如 JSP 等,在以前只在电脑上的话还没什么事,但现在随着互联网的发展,越来越多的客户端开始出现,如Android、IOS,为了能够统一接口,因此RESTful架构应运而生。
知乎上Ivony对其有句概括很清晰:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。