Restful是一种设计风格而不是标准,好比一个接口本来是这样的:程序员
http://www1.qixoo.com/user/view/id/1
表示获取id为1的用户信息,若是使用Restful风格,能够变成这样:json
http://www1.qixoo.com/user/1
能够很明显的看出这样作的好处:安全
一、更简洁的URL,对程序员友好框架
二、不暴露内部代码结构,更安全设计
那么,如何实现这个接口呢?首先,咱们须要接收到/user/1部分。code
$path = $_SERVER[‘PATH_INFO‘];
$arr = explode(‘/‘,$path);接口
print_r($arr);
获得下面的结果:基础
Array
(
[0] =>
[1] => User
[2] => 1
)
获取到了参数,下面的操做就很简单了:原理
if($arr[1] == ‘user‘){
$model = new UserModel();
$id = $arr[2];
//读取用户信息
$user_info = $model->find($id);
echo json_encode($user_info);
}
这样,咱们就实现了一个Restful风格的API。select
下面,咱们再看如何实现读取用户列表的接口,传统方式:
http://www1.qixoo.com/user/list
使用Restful风格,能够更加简洁:
http://www1.qixoo.com/user
和读取用户信息的区别是,user后面没有id,因此咱们能够在读取部分的基础上作一下修改:
if($arr[1] == ‘user‘){
$model = new UserModel();
$id = $arr[2];
if($id){
//读取用户信息
$user_info = $model->find($id);
echo json_encode($user_info);
}else{
//读取用户列表
$user_list = $model->select();
echo json_encode($user_list);
}
}
这样就实现了读取用户列表的接口。
下面再看如何实现增长用户的接口,传统方式:
http://www1.qixoo.com/user/add
Restful风格:
http://www1.qixoo.com/user
和读取用户列表的接口是同样的,怎么区分呢?其实很简单,读取是GET请求,而增长是POST请求,用户信息都存在POST参数中,因此能够对代码进行下面的修改:
if($arr[1] == ‘user‘){
$model = new UserModel();
$id = $arr[2];
if($id){
//读取用户信息
$user_info = $model->find($id);
echo json_encode($user_info);
}else{
if(IS_POST){
//增长用户
$res = $model->add($_POST);
if($res){
echo ‘success‘;
}else{
echo ‘fail‘;
}
}else{
//读取用户列表
$user_list = $model->select();
echo json_encode($user_list);
}
}
}
一样的接口,能够依据HTTP请求方式来执行不一样的逻辑。
这就是实现Restful风格API的核心思路,依次类推,咱们能够实现编辑用户接口和删除用户接口:
http://www1.qixoo.com/user/1
只要使用不一样的请求方式,就能区分开了。咱们能够用PUT请求来执行编辑操做,用DELETE请求来执行删除操做。
具体代码就不写了,有兴趣的朋友能够本身尝试实现如下。
在ThinkPHP框架中也提供了对Restful风格的支持,原理也是相似的。
总结一下,Restful风格就是,使用简单的URL和HTTP请求方式来实现接口。