REST - Yii 提供了一整套用来简化实现 RESTful 风格的 Web Service 服务的 API
既然作为一种软件架构风格,那就自然就会有它本身的设计原则,就像iOS、android以及metroUI都有自己的设计规范一样。遵守基本的设计规则可以帮助我们设计出更加简洁易懂、优雅的软件系统。在这个过程中,程序员们都是艺术家,设计着另外一种美。
什么是REST
简单的说,REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
为什么要Restful?
主要遵循两个准则:
- 不要为了RESTful而RESTful
- 在能表达清楚的情况下,简单就是美
RESTful 设计原则:
0: 每个实体对象仅需要两个URL (响应速度每个对象仅需要两个url,第一个是获取对象的集合,第二个是获取单个对象)
/books/2 # for Single Object
/books # for Collections
1: 使用名词代替动词
/books/2 # Good :)
/getBook?id=2 # Bad :(
2: 正确使用HTTP方法
GET # Read
POST # Create
PUT # Update
DELETE # Delete
3:对象间的关联关系
/books/2/author # book author
/author/1/books # author's bo
4: 数据分页
/books?start=10&count=20 # return the books from 10 to 30
5: 返回需要的参数
/books/2?fields=author,isbn,price # only return the book's author, isbn and price
6: 版本管理
GET /books/2 # version 1
GET /v2/books/2 # version 2
REST的优点
-
可更高效利用缓存来提高响应速度
-
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
-
浏览器即可作为客户端,简化软件需求
-
相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
-
不需要额外的资源发现机制
-
在软件技术演进中的长期的兼容性更好
关于状态
应该注意区别应用的状态和连接协议的状态。HTTP连接是无状态的(也就是不记录每个连接的信息),而REST传输会包含应用的所有状态信息,因此可以大幅降低对HTTP连接的重复请求资源消耗。