百度百科解释:
rest:REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
restful:一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
百度百科的解释有点专业化,但我们可以从另外一个角度,以举例的方式来阐述:
通常的web项目的CRUD发出的url一般为
URL | 请求方式 | 操作 |
http://localhost:8080/myweb/queryById?id=1 或 http://localhost:8080/myweb/query?id=1 |
GET | 根据id查询数据 |
http://localhost:8080/myweb/save 或 http://localhost:8080/myweb/add |
POST | 新增数据 |
http://localhost:8080/myweb/modify 或 http://localhost:8080/myweb/update |
POST | 修改数据 |
http://localhost:8080/myweb/removeById?id=1 |
GET/POST | 根据id删除数据 |
一看之下是不是很不爽,同样的操作对应这各种不同的url,而且用到的Http 的请求方式要么是GET 要么是POST,然后实际上Http 的请求方式有八种!
正如此,restful强调的是,一种资源(操作)在网络上对应的有且仅有一个url,而用Http 自身的请求方式来阐述要进行的操作。
URL | 请求方式 | 操作 |
http://localhost:8080/myweb/query/1 | GET | 根据id查询数据 |
http://localhost:8080/myweb/add | POST | 新增数据 |
http://localhost:8080/myweb/modify | PUT | 修改数据 |
http://localhost:8080/myweb/remove/1 | DELETE | 根据id删除数据 |
两个表格对比之下就简单明了,restful 风格的url 中是不带“动词”的,用请求的方式来描述“动词”,这样的话GET 请求就是查询,POST 请求就是新增,PUT 请求就是修改,DELETE 请求就是删除。
如果按照以前的话,一个查询就可以有多种url,命名不规范,不能很好的统一,这就是为什么有restful 的原因。