api接口返回统一数据格式 status、message、data



  /**
     * [apiReturn 用于给app提供接口使用 带有请求结果状态表示,和结果提示,默认返回json]
     * @param  [number] $status  [请求结果的状态标识,设定后要在文档中给予说明]
     * @param  string $message [请求结果的提示语句]
     * @param  [array] $data    [请求返回的数据,app前端需要的数据]
     * @param  [string] $type    [要返回的数据类型,支持json,xml,默认返回json]
     * @return [json或xml]          [返回数据]
     */
    protected function apiReturn($status, $message = '', $data, $type)
    {

        if (!is_numeric($status) || !is_string($message)) {
            $this->apiReturn('400', '参数错误');
        }
        $res = array();
        $res['status'] = $status;
        $res['message'] = $message;
        $res['data'] = $data;

        if (in_array($type, array('json', 'xml'))) {
            $this->ajaxReturn($res, $type);
        } else {
            $this->ajaxReturn($res);
        }

    }



function ajaxReturns($data,$type='') {
    if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');
    switch (strtoupper($type)){
        case 'JSON' :
            // 返回JSON数据格式到客户端 包含状态信息
            header('Content-Type:application/json; charset=utf-8');
            exit(json_encode($data));
        case 'XML'  :
            // 返回xml格式数据
            header('Content-Type:text/xml; charset=utf-8');
            exit(xml_encode($data));
        case 'JSONP':
            // 返回JSON数据格式到客户端 包含状态信息
            header('Content-Type:application/json; charset=utf-8');
            $handler  =   isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
            exit($handler.'('.json_encode($data).');');
        case 'EVAL' :
            // 返回可执行的js脚本
            header('Content-Type:text/html; charset=utf-8');
            exit($data);
        default     :
            // 用于扩展其他返回格式数据
            Hook::listen('ajax_return',$data);
    }
}


你可能感兴趣的:(接口)