引入Rest风格接口的特性,主要是为了适应平台化和移动化开发的需要。
移植自ThinkPHP项目的RestAction。
REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST提出了一些设计概念和准则:
网络上的所有事物都被抽象为资源(resource);
每个资源对应一个唯一的资源标识(resource identifier);
通过通用的连接器接口(generic connector interface)对资源进行操作;
对资源的各种操作不会改变资源标识;
所有的操作都是无状态的(stateless)。
需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
传统的请求模式和REST模式的请求模式区别:
作用 传统模式 REST模式
列举出所有的用户 GET /users/list GET /users
列出ID为1的用户信息 GET /users/show/id/1 GET /users/1
插入一个新的用户 POST /users/add POST /users
更新ID为1的用户信息 POST /users/mdy/id/1 PUT /users/1
删除ID为1的用户 POST /users/delete/id/1 DELETE /users/1
增加了Rest模式用于支持RESTFul开发,REST模式主要提供下面的一些功能:
路由增加请求类型和资源类型判断支持;
支持资源类型自动检测;
支持请求类型自动检测;
RESTFul方法支持;
可以设置允许的请求类型列表;
可以设置允许请求和输出的资源类型;
可以设置默认请求类型和默认资源类型;
要使用REST模式,只需要控制器继承Rest_Controller类即可。
配置名 说明 默认值
REST_METHOD_LIST REST允许的请求类型列表 get,post,put,delete
REST_DEFAULT_METHOD REST默认请求类型 get
REST_CONTENT_TYPE_LIST REST允许请求的资源类型列表 html,xml,json,rss
REST_DEFAULT_TYPE REST默认的资源类型 html
REST_OUTPUT_TYPE REST允许输出的资源类型列表 array(
'xml' => 'application/xml',
'json' => 'application/json',
'html' => 'text/html',
),
代码查看:
<a href="https://gitcafe.com/web3d/uxf/blob/master/upload/source/class/rest/rest_controller.php">https://gitcafe.com/web3d/uxf/blob/master/upload/source/class/rest/rest_controller.php</a>