部署
安装稳定版 composer create-project topthink/think thinkphp6
进入命令行thinkphp6文件下 执行php think run
- 第一步:配置虚拟域名;
伪静态
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
-
第二步:执行指令安装多应用模式功能;
composer require topthink/think-multi-app -
第三步:创建应用目录;
php think build api -
第四步:版本控制
复制根目录下route文件放到api应用上,修改app.php代码
app/api/controller/v1
<?php
use think\facade\Route;
//Route::rule(':version/:controller', 'api/:version.:controller/index');
Route::rule(':version/:controller/:action', 'api/:version.:controller/:action');
把index.php文件复制到v1修改命名空间
访问http://域名/api/v1/index/index
输出JSON格式
在api应用下新建文件夹exception和文件BaseException.php(api/exception/BaseException.php)
所有控制器都继承这个文件
删掉app下BaseController.php文件
<?php
declare (strict_types = 1);
namespace app\api\exception;
use app\api\common\Output;
use think\App;
/**
* api基础类
*/
abstract class BaseException
{
use Output;
/**
* Request实例
* @var \think\Request
*/
protected $request;
/**
* 保存用户登录信息
*/
protected $members;
/**
* 应用实例
* @var \think\App
*/
protected $app;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [];
}
创建common文件夹和Output.php
<?php
namespace app\api\common;
use think\Response;
trait Output
{
/**
* 返回封装后的API数据到客户端
* @param mixed $data 要返回的数据
* @param integer $code 返回的code
* @param mixed $message 提示信息
* @param string $type 返回数据格式
* @param array $header 发送的Header信息
* @return Response
*/
public function Success($data , string $message = '请求成功', int $code = 200, string $type = 'json',$header = []) :Response
{
$result = [
'code' => $code,
'message' => $message,
'time' => date('Y-m-d H:i:s',time()),
'data' => $data
];
return Response::create($result,$type)->header($header);
}
/**
* 返回封装后的API数据到客户端
* @param mixed $data 要返回的数据
* @param integer $code 返回的code
* @param mixed $message 提示信息
* @param string $type 返回数据格式
* @param array $header 发送的Header信息
* @return Response
*/
public function Erroneous($data , string $message = '请求失败', int $code = 500, string $type = 'json',$header = []) :Response
{
$result = [
'code' => $code,
'message' => $message,
'time' => date('Y-m-d H:i:s',time()),
'data' => $data
];
return Response::create($result,$type)->header($header);
}
/**
* @param int $code
* @param string $message
* @param array $data
* @param array $header
*/
public function returnMsg($data = [], $message = '',$code = 500,$header = [])
{
$res = [
'code' => $code,
'message' => $message,
'time' => date('Y-m-d H:i:s',time()),
'data' => $data
];
json($res)->send();
die;
}
}
<?php
declare (strict_types = 1);
namespace app\api\controller\v1;
use app\api\exc