商品的增删改查
下面是公共控制器BaseApi.php,封装了跨域请求以及登录过滤以及登录检测和通用响应的方法。
<?php
namespace app\adminapi\controller;
use think\Controller;
use think\Request;
class BaseApi extends Controller
{
// 登录过滤,先定义不需要做登录检测的接口 1、login控制器里面的login方法 2、login控制器里面的captcha方法
protected $no_login = ['login/login','login/captcha'];
// 因为所有的后台接口,都需要进行跨域处理,所以把基础跨域处理封装起来
// 初始化方法(相当于构造方法)
public function _initialize()
{
parent::_initialize();
//允许的源域名
header("Access-Control-Allow-Origin: *");
//允许的请求头信息
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
//允许的请求类型
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
// 登录检测
// $this -> checklogin();
// 权限检测
$res = \app\adminapi\logic\AuthLogic::check();
if(!$res){
$this->fail('无权访问');
}
}
// 封装一个登录检测的函数
public function
try{
// 判断当前的接口是否需要检测checklogin(){
// 获取当前控制器,用request()请求对象里面的controller()方法,它能够获取当前访问的控制器名称
$request = request()->controller();
// request()请求对象里面的action()方法能获取当前访问的方法名称
$action = request()->action();
// 将访问的控制器里面的方法进行拼接,request()请求对象里面对大小写有要求,我们的路径是小写,所以需要转成小写
$path = strtolower($request . '/' . $action);
// 再判断$path在不在$no_login里面
if(in_array($path,$this->no_login)){
// 如果在,则不需要进行检测
return;
}
// 需要进行检测
$user_id = \tools\jwt\Token::getUserId();
if(!$user_id){
$this -> fail('未登录或token无效');
}
//已登录 将用户id存到请求信息中,方便后续接口使用
$this->request->get(['user_id' => $user_id]);
$this->request->post(['user_id' => $user_id]);
}catch(\Exception $e){
$this->fail('服务异常,请检查token令牌,403');
}
}
/**
* 通用响应
* @param int $code 错误码
* @param string $msg 错误描述
* @param array $data 返回数据
*/
public function response($code,$msg,$data)
{
$res = [
'code' => $code,
'msg' => $msg,
'data' => $data
];
// 将数据转化为json格式再返回
// echo json_code($res,JSON_UNESCAPED_UNICODE);die;
json($res)->send();die;
}
/**
* 失败时响应
* @param string $msg 错误描述
* @param int $code 错误码
*/
public function fail($msg = 'fail',$code = 500)
{
// 响应失败时,直接调用通用响应将两个错误响应参数传过去即可
return $this -> response($code,$msg,[]);
}
/**
* 成功是响应
* @param array $data 返回数据
* @param int $code 错误码
* @param string $msg 错误描述
*/
public function ok($data=[],$code=200,$msg='success')
{
return $this-