Files
premium/database/migrations/20211226000230_pluginApidoc.php
2025-05-18 07:42:27 +00:00

164 lines
7.1 KiB
PHP

<?php
use think\migration\Migrator;
class PluginApiDoc extends Migrator
{
public function change()
{
$table = $this->table('plugin_apidoc', [
'engine' => 'InnoDB',
'comment' => 'Api文档',
'collation' => 'utf8mb4_general_ci',
]);
//删除表
if ($table->exists()) {
$table->drop();
}
$table
->addColumn('title', 'string', ['limit' => 255, 'default' => '', 'comment' => '标题'])
->addColumn('des', 'text', ['comment' => '描述'])
->addColumn('create_time', 'datetime', ['null' => 1, 'comment' => '创建时间'])
->addColumn('update_time', 'datetime', ['null' => 1, 'comment' => '更新时间'])
->addColumn('delete_time', 'datetime', ['null' => 1, 'comment' => '删除时间'])
;
$data = [
[
'title' => '文档更新',
'des' => '本文档分为两个部分,`全局说明文档`和`其他文档`。
# 全局说明文档
全局说明下的文档在后台生成Api文档菜单中进行添加,添加完成后点击生成Api文档按钮即可在本文档中看见
# 其他文档
其他文档使用PHP程序,通过PHP的类反射机制,获取到`app/controller/api/`目录下所有文件的注解来进行生成。
注解规则请查阅`laytp.com`官网手册或者框架`app/controller/api/Demo.php`文件。
如果后端程序员更新了`api`接口程序,并且使用了相应的注解规则,在后台点击`生成Api文档`按钮即可在本文档看到最新的Api文档
# 注意点
由于文档使用的是静态html展示,而浏览器对html页面是有缓存的。所以如果文档进行了更新。可能需要强制刷新页面才能看到最新的文档。',
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
],
[
'title' => '在线测试功能使用',
'des' => '本文档使用`Laytp极速后台开发框架 - 生成Api文档插件`进行生成。
如果需要使用本文档的在线测试功能,需要先进行Api文档配置。
### Api文档配置
点击本文档右上角配置图标会弹出配置层。
配置项包括:Api请求域名、签名开关、Header参数。
#### Api请求域名
后台使用单域名部署模式,则无需修改,使用默认值即可。
后台使用多域名部署模式,则后端程序员需要提供请求Api的域名地址。使用者不要以/结尾,将请求Api的域名地址填入此处
#### 签名开关
请求Api有签名中间件,签名中间件是否启用要根据后台[系统配置 - 基础配置 - Api签名开关]是否开启的配置来决定。如果后台配置[Api签名开关]开启了,此处也要开启。此处开启后,使用本文档的在线测试功能时,在ajax请求头部会自动添加request-time和sign两个参数。至于签名具体如何生成,请查阅[签名相关]章节说明
#### Header参数
此处填入后端程序员自定义的请求头部参数。框架自定义的请求头部参数有用户登录凭证token,请求时间戳request-time,签名sign三个。一个复杂的系统,一般还会在Header头部定义一些公用参数。比如平台标识,代理标识等等。这些公用参数根据需求不同由后端程序员定义,在使用本文档时,自行在此处进行添加
### 配置保存
点击保存按钮,或者点击页面阴影部分遮罩层,配置都会进行保存
### 配置持久化
Api文档配置使用的是localStorage存储在浏览器端进行持久化的。无需担心页面关闭后,配置不存在的问题',
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
],
[
'title' => '统一说明',
'des' => '# 请求方式
默认使用POST方式进行请求
# 请求头Content-Type
请求头的Content-Type定义请求参数的数据类型。ThinkPHP6兼容多种常用请求头方式。比如`application/json`、`application/form-data`和 `application/x-www-form-urlencoded`。
一般的接口,客户端可以使用`application/json`,自行将参数定义成`json`格式进行参数传递。
文件上传不支持`json`方式上传文件`Base64`内容,需要使用提交表单方式上传文件。
# 接口域名
- 正式环境
由后端程序员提供
- 测试环境
由后端程序员提供
# 后台地址
- 正式环境
- 访问地址
由后端程序员提供
- 账号
admin
- 密码
123456
- 测试环境
- 访问地址
由后端程序员提供
- 账号
admin
- 密码
123456',
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
],
[
'title' => '签名相关',
'des' => '客户端请求Api接口程序,后端有签名中间件对请求进行拦截。
签名中间件是否启用要根据后台[系统配置 - 基础配置 - Api签名开关]是否开启的配置来决定。
如果后台配置[Api签名开关]开启了,那么客户端在请求Api接口时,需要在Header部分传递两个参数`request-time`和`sign`。
`request-time`的值由客户端自行定义为当前Unix时间戳。
`sign`的值由签名生成规则计算生成。
# 签名生成规则
- 客户端自行定义request-time的值为当前Unix时间戳,并经过`md5`运算得到`stringA`
- 后台系统配置 - 基础配置 - Api签名Key的值为生成签名的Key,并经过`md5`运算得到`stringB`
- 连接`stringA`和`stringB`后经过`md5`运算得到`stringC`
- 最后将`stringC`全部转成大写即是客户端需要在请求头部分传递的`sign`值',
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
],
[
'title' => '接口返回',
'des' => '接口统一返回`json`格式的数据。
# 返回说明
|参数名|必然存在|类型|说明|
|:---- |:---|:----- |----- |
|code |是 |integer |接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示message;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码|
|msg |是 |string | 接口返回文字描述 |
|time |是 |integer | 接口返回时间戳,单位秒 |
|data |是 |object/array | 附加数据。单条数据是对象,多条数据是数组。当为空时,会返回一个空对象{}|
# 返回示例
```
{
"code":1,
"msg":"签名错误",
"time":1613628412,
"data":{}
}
```',
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
],
];
$table->setData($data)->create();
}
}