PHP 封装接口类

跨域情况下,客户端先发送options预检请求,接口服务端需要对预检请求进行处理。

在入口文件 public/index.php中,增加代码如下:

//处理跨域预检请求
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
    //允许的源域名
    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');
    exit;
}

所有后台接口,都需要进行跨域处理。

创建接口基础控制器类:项目目录下,执行以下命令

php think make:controller adminapi/BaseApi --plain

控制器文件 application/adminapi/controller/BaseApi.php中

创建初始化方法 _initialize()

//初始化方法
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');
}

接口响应数据格式,统一约定为 包含code 、msg、data 三个字段的 json字符串。

在BaseApi控制器中,定义快速响应数据的方法如下:

function getJson($code,$msg,$data = []){
    $resulf = [
        'code' => $code,
        'msg' => $msg,
        'data' =>$data,
    ];

    return json($resulf);
}
	/**
     * 通用响应
     * @param int $code 错误码
     * @param string $msg 错误描述
     * @param array $data 返回数据
     */
    public function response($code=200, $msg='success', $data=[])
    {
        $res = [
            'code' => $code,
            'msg' => $msg,
            'data' => $data
        ];
       
        json($res)->send();die;
    }

你可能感兴趣的:(thinkphp)