企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 安装稳定版 ~~~ composer create-project topthink/think tp ~~~ ## 安装开发版 ~~~ composer create-project topthink/think=6.0.x-dev tp ~~~ ## 更新 ~~~ composer update topthink/framework ~~~ ## 安装多应用模式扩展`think-multi-app` ~~~ composer require topthink/think-multi-app ~~~ ## 快速生成应用 ~~~ php think build demo php think build api php think build admin ~~~ 会自动生成`demo,api,admin`应用,自动生成的应用目录包含了`controller`、`model`和`view`目录以及`common.php`、`middleware.php`、`event.php`和`provider.php`等文件。 ## 开启调试模式 应用默认是部署模式,在开发阶段,可以修改环境变量`APP_DEBUG`开启调试模式,上线部署后切换到部署模式。 本地开发的时候可以在应用根目录下面定义`.env`文件。 > 通过`create-project`安装后在根目录会自带一个`.example.env`文件(环境变量示例),你可以直接更名为`.env`文件并根据你的要求进行修改,该示例文件已经开启调试模式 ### 2、打开错误调试 在开始之间,我们先打开tp6的错误调试 1.找到config/app.php下的show\_error\_msg ,改成true ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210607214440799.png) 2.找到下面根目录下的.example.env文件,重命名此文件,把.example删掉 实现隐藏index.php很简单,只需要找到public目录下的.htaccess文件,添加如下代码就可以了。 ``` <IfModule mod_rewrite.c> #如果mode_rewrite.c模块存在 则执行以下命令 Options +FollowSymlinks -Multiviews RewriteEngine On #开启 rewriteEngine # !-d 不是目录或目录不存在 RewriteCond %{REQUEST_FILENAME} !-d # !-f 不是文件或文件不存在 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,PT,L] # 参数解释 # ^(.*)$: 匹配所有的路口映射 # QSA: (Query String Appending)表示保留参数入get传值?xxx==xx; # PT: 把这个URL交给Apache处理; # L: 作为最后一条,遇到这条将不再匹配这条之后的规则 # 增加下面这项,否则在header中会获取不到Authorization SetEnvIf Authorization .+ HTTP\_AUTHORIZATION=$0 </IfModule> ``` ### 6、jwt token验证 ``` composer require thans/tp\-jwt\-auth ``` ## 在.env文件中生成密钥secret ``` php think jwt:create ``` 这个插件有三种方式【header,token,param】传递token,我就使用其中一个,也是最常用的一种,就是在【header】中传递token信息,这个插件默认验证header中的token信息需要传递的参数名为authorization,而在header中直接传递该参数tp6是获取不到的,需要做一些设置, 在根目录中的public目录下的.htacccess文件中添加 ``` SetEnvIf Authorization .+ HTTP\_AUTHORIZATION=$0 ``` ``` // 引入jwt插件 use thans\\jwt\\facade\\JWTAuth; // 生成token $token \= JWTAuth::builder(\['uid' \=> 1,'name'\=>'ceshi'\]); return $token; ``` #### (2).验证token 我使用的是路由中间件的方式验证token, ##### ① 写一个中间件 在根目录下的app目录中创建middleware目录,在其下创建CheckToken.php文件 *app/middleware/CheckToken.php* ``` <?php namespace app\middleware; use thans\jwt\facade\JWTAuth; use thans\jwt\exception\JWTException; class CheckToken { public function handle($request, \Closure $next) { // OPTIONS请求直接返回 if ($request->isOptions()) { return response(); } try { JWTAuth::auth(); }catch (JWTException $e) { return json($e->getMessage()); } return $next($request); } } ``` ##### ② 起别名 给该中间件起个别名,在根目录下的config/middleware.php文件中 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608215343992.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA0Mjg2OA==,size_16,color_FFFFFF,t_70) ##### ③ 在路由文件中使用中间件![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608215653121.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA0Mjg2OA==,size_16,color_FFFFFF,t_70) ##### ④ 创建对应的方法 在第三步中我们创建了一个getUserInfo()方法,现在在User.php文件中创建 ``` public function getUserInfo() { return json(['id'=>1, 'name'=> '啦啦啦']); } ``` [# thinkphp6搭建后端api接口](https://blog.csdn.net/weixin_45042868/article/details/117674575?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.essearch_pc_relevant)