## 安装稳定版
~~~
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)