thinkphp-vue-admin 后台接口 |前后端分离决方案
它一套有thinkphp开发集成性后台接口,内置权限管理,api响应,psysh等多功能工具
他的作用
- 自带登录校验
- 快速完成数据格式校验
- 自带权限管理机制
- 支持权限管理自动生成节点
- 自带响应格式处理
- 支持后端的菜单控制
利用它
快速搭建基础的前后端分离场景下的后台
在线地址: http://v-web.surest.cn/
账号: admin
密码: admin123
vue 地址: https://github.com/surest-sky/thinkphp-vue-admin
安装
代码语言:javascript复制git clone https://github.com/surest-sky/think-vue-admin-api.git
cd think-vue-admin-api
composer install
导入 目录下的 `permission.sql`
初始化权限节点
代码语言:javascript复制php think init_permission --action reset
有关应用
psysh
psysh 是什么: http://vergil.cn/archives/psysh
代码语言:javascript复制> php think psysh
appcommonExample::psysh();
输出: 2
-> php think psysh
appcommonExample::init_permission();
输出: 更新节点完成
自定义验证器 | validate
具体使用方法不详说, 大概如下
定义一个验证器, 继承 appcommonvalidateBaseValidate
验证数据
代码语言:javascript复制$validate = (new CircleValidate())->goCheck();
$data = $validate->validatedData(); # 获取验证通过的数据
然后常用的正则和一些方法都可以写到 BaseValidate
中即可
例如常用验证 ids
格式如 1,2,3,4 的数据可以这样获取
# 校验ids
$validate = (new IdsValidate())->goCheck();
$ids = $validate->getIds();
响应方式
- $this->successed(); { "msg": "success", "code": 200, "data": {} }
- $this->internalError(); { "msg": "服务器错误", "code": 500, "data": {} }
- $this->notFond(); { "msg": "未找到", "code": 404, "data": {} }
- $this->frobidden(); { "msg": "未授权", "code": 401, "data": {} }
- $this->failed(); { "msg": "授权失败", "code": 403, "data": {} }
在 BaseController
中
use ApiResponse;
继承 BaseController
使用响应的时候, 直接
$this->successed($list);
具体的可见方法: appcommonTraitsApiResponse
异常处理控制
在 app.php
中, 我们接管了异常, 响应格式替换为我们的 ApiResponse
具体见方法, appcommonexceptionHandler
异常处理控制后, 可定制化异常处理
见: http://surest.cn/archives/85/
简单说明一下:
在 handler.php
通过传递当前抛出异常的 exception
和我们需要针对化处理的异常进行校验, 采用的也就是 instanceof
去判断来自于哪个异常
这样做的好处就是, 针对不用的异常进行监控, 并抛出指定的异常错误信息 或者 日志
自定义的异常处理 必须 继承 CustomExceptionInterface
接口, 通过 showMsg
来处理抛出异常
代码中, 我们会发现一个问题, 在 handler.php
中 异常信息是返回的, 官方文档中有介绍, **使用异常处理接管的函数必须返回一个 response
响应, 所以可以看到 在 BaseException
中
设置了 is_anomaly_andling_takeover
就是告诉 ApiResponse
需要返回一个 response
响应
本文由邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名