````
<?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