RESTful架构,是目前非常流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
但是,到底什么是RESTful架构,并不是一个容易说清楚的问题。下面,我就谈谈我理解的RESTful架构。

restful
REST这个词,是 Roy Thomas Fielding 在他2000年的博士论文中提出的。
Fielding 是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。

REST 全称是Representational State Transfer,中文意思是表现层状态转化。
这个翻译一般人都无法理解,云里雾里的不知所云。

不废话,直接看典型的 RESTfull API 应该是怎样的:
获取所有用户列表:GET /users
获取用户a的详情:GET /users/a
新增用户:POST /users
修改用户a的信息:PUT /users/a
删除用户a:DELETE /users/a

总结下,典型的特征是,用请求方法来表示不同的操作:
GET 表示获取资源
POST 表示新增资源
PUT 表示修改资源
DELETE 表示删除资源

而我们的URL则用来表示不同的资源,/users 表示用户列表 /users/a表示具体的用户a
基本上就是这么简单了。

另外,有些人认为用了 restful 后,query参数就不能用了,然后把
/api/users?page=2&size=10&keyword=app&type=xx&time=xx&o=desc
设计成/api/users/page/2/size/10 ....
这是没必要的,query参数我们依然是可以使用的。

另外,restful 也不是任何时候都适用,有些情况下,可能不好表达或者表达起来非常怪异。
这时候我的建议是可以使用普通的表达方式,参考如何设计API
只要表达清晰没问题,用哪种都是可以的。