````
<?php
/**
* api基类,添加用于所有api控制器的方法
* @author ianzhi
* @date 2018-06-20
*/
namespace app\ninty9api\controller;
use app\ninty9api\service\Token as TokenService;
use app\admin\model\Nintyuser;
use app\admin\model\User;
use app\admin\model\Trainer;
class Api
{
/**
* @var array 用于记录不需要token验证的方法,将方法名放进数组即可
*/
protected $no_need_token = [
];
/**
* Api constructor.
* @throws \think\exception\DbException
*/
public function __construct()
{
// 公共响应头
header('Content-Type:Application/json');
// 如果需要跨域,写在这里
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Headers:x-token,user-type,Origin, Access-Control-Request-Headers, SERVER_NAME, Access-Control-Allow-Headers, cache-control, token, X-Requested-With, Content-Type, Accept, Connection, User-Agent, Cookie');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
// 验证用户登陆
$user_type = request()->header('user-type');
$action = request()->dispatch()['module'][2] ?: 'index';
if (request()->method() == 'OPTIONS') {
exit();
}
// 拦截器(放行数组中的方法)
// if (!in_array($action, $this->no_need_token)) {
// if ($user_type == 'admin') {
// $token = request()->header('x-token');
// $user = User::get(['api_token'=>$token]);
// request()->bind('user', $user);
// } else {
// $uid = TokenService::getCurrentUid();
// if (!is_numeric($uid) || $uid == 0) {
// $this->success([], 'token不存在,请重新获取!', 401);
// } else {
// if ($user_type == 'trainer') {
// $user = Trainer::get($uid);
// } else {
// $user = NintyUser::get($uid);
// }
// request()->bind('user', $user);
// }
// }
// }
}
/**
* 用于成功返回
* @param array $data 响应的数据
* @param string $message 响应信息
* @param int $code 响应码
* @param array $headers 特殊的响应头信息
*/
public function success($data=[], $message='请求成功!', $code=200, $headers=[])
{
// 添加自定义头
if ($headers) {
foreach ($headers as $header_key=>$header_value) {
header($header_key . ':' . $header_value);
}
}
// 构造响应内容
$return_data = [
'code' => $code,
'message' => $message
];
if ($data) {
$return_data['data'] = $data;
}
echo json_encode($return_data, JSON_UNESCAPED_UNICODE);
exit;
}
}
- 空白目录
- Php
- 协议
- composer
- PhpStrom汉
- 数据库设计
- 数据结构
- 函数
- 正则表达式
- 函数
- 筛选——搜索
- json
- 自定义函数
- Html5
- js
- qq调用
- xdebug 安装
- 慕课网
- 快速上手Linux 玩转典型应用
- 微信小程序商城构建全栈应用
- 笔记
- 日志
- 算法
- 排序
- ThinkPhp5.0_框架
- 协议
- 【模型】
- 1_phpstrom自动创建模型
- Model_1001
- Token
- BaseModel.php
- A001Model.php
- 1对多——模型实现
- 嵌套关联关系
- 隐藏模型字段
- 范例
- 自定义模型基类BaseModel.php
- 定义API版本号V1,V2
- 数据库
- 语法
- 点击刷新验证码
- 修改文件
- 规范代码
- 调用第三方类库
- 隐藏index.php
- 杂项
- 项目
- api
- 筛选__搜索
- 【生成随机字符串】
- 自动加载配置信息extra
- 【验证】
- BaseValidate.php
- TestValidate.php
- 事务回滚
- Laravel5_框架
- 协议
- 函数
- 0010
- ————————————————
- 代码规范_dow
- MySQL
- 优化Mysql
- 回收站ss
- tp5.1Mysql 优化
- 【看云】标签
- 回收站
- trainer_pic
- 【HTTP】协议
- 199fit杂项
- 【php 错误提示信息】
- 日志a
- 测试测试
- 2002
- 项目
- 健身房
- 钱包
- 邓士鹏
- 1001