REST 架构
这几天学习redmine,顺便学了一些web架构方面的东西,这方面涉及到很多知识,比如MySQL、Javascript、HTML等等。这么多东西要慢慢研究了,今天先写一个刚学到的web框架吧,这就是REST。
REST(REpresentational State Transfer),意思是“表述性状态转移”。REST架构是针对Web应用而设计的,其目的是降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则:
网络上的所有事物都被抽象为资源(Resource)。
每个资源对应一个唯一的资源标识符(Resource Identifier)。
通过通用的连接器接口(Generic Connector Interface)对资源进行操作。
对资源的各种操作不会改变资源标识符。
所有的操作都是无状态的(Stateless)。
传统的Web应用大都是B/S架构,其优点是部署非常方便,但是用户体验方面却不是很理想。为了改善这种情况,REST在原有架构的基础上增加了3个新规范:统一接口、分层系统和按需编码。具体来说,REST是基于HTTP协议的,即对资源的操作行为都是通过HTTP实现。方法有四个:Get、Post、Put和Delete,正好对应数据库操作的CRUD。由于资源和URI是一一对应的,执行这些操作的时候URI是没有变化的,这和传统的Web开发有很大区别。正是由于这一点,极大地简化了Web开发,也使得URI可以设计成更为直观的反映资源的结构,这种URI的设计被称为RESTful的URI。
我对REST和传统web框架区别的理解就是URL的路径和HTTP操作方式的不同,REST更加简单,直观。具体的对比如下所示:
普通方式:URL==Command
1 GET /users/show/1
2 POST /users/delete/1
3 POST /users/add
4 POST /users/edit/1
REST方式:URL==Resource
1 GET /users/1
2 DELETE /users/1
3 POST /users/1
4 PUT /users/1