ThinkPHP5 RESTful API开发版本控制

thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细,我根据个人经验分享下。

我们以一个用户信息读取的接口为例,包含两个版本V1和V2,v2版本的接口包括用户的档案信息,统一使用json格式数据输出到客户端。

在application目录下面创建api模块目录,并创建controller和model子目录,因为api接口无需视图,所以不需要创建view目录。

api版本号可以在请求头、参数、URL路由参数中传入,以下是tp5.X中使用方法。

第一种:URL路由传入方式(推荐)

在route.php路由文件中配置,如下

return [  
    // api版本路由  
    'api/:version/:controller'=>'api/:version.:controller/index',// 省略方法名时  
    'api/:version/:controller/:function'=>'api/:version.:controller/:function'// 有方法名时  

];  

不同版本的URL访问地址为:

http://tp5.com/api/v1/user/10
http://tp5.com/api/v2/user/10

版本号中不能包含.符号。

第二种:请求头传入方式

在route.php路由文件中配置,如下

$v = request()->header('version');  
if($v==null) $v = "v1";  
return [  

    //api版本控制  
    'api/:controller$'=>['api/'.$v.'.:controller/index',['method' => 'get']],  
    'api/:controller/:function$'=>'api/'.$v.'.:controller/:function',  

    //资源路由  
    '__rest__'=>[  
        //api  
        'api/house'=>['api/'.$v.'.house',['only'=>['index','read','update','delete']]],  
        'api/book'=>['api/'.$v.'.book',['only'=>['index','read','save','delete']]],  
        'api/book_rent'=>['api/'.$v.'.book_rent',['only'=>['index','read','save']]],  
  ]  
]  

第三种:请求参数传入方式

和请求头方式类似,这里不再累述。

控制器实现

v1版本控制器(类文件位置为application/api/controller/v1/User.php)代码如下:

namespace app\api\controller\v1;

use app\api\model\User as UserModel;

class User
{
    // 获取用户信息
    public function read($id = 0)
    {
        $user = UserModel::get($id);
        if ($user) {
            return json($user);
        } else {
            return json(['error' => '用户不存在'], 404);
        }
    }

}

v2版本的控制器(类文件位置为application/api/controller/v2/User.php)代码如下:

namespace app\api\controller\v2;

use app\api\model\User as UserModel;

class User
{
// 获取用户信息
public function read(id = 0)  
    {
id = 0)      {
user = UserModel::get( id,profile);if( i d , ‘ p r o f i l e ′ ) ; i f ( user) {
return json($user);
} else {
return json([‘error’ => ‘用户不存在’], 404);
}
}

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值