thinkphp5实现api接口

浏览:44665 发布日期:2017/09/28 分类:技术分享
PHP接口开发,常用的两种方式
第一种方式:前端ajax向接口发送数据$.ajax({
        url: "./index.php", 
        type: "post",
        dataType: "json",
        data: {'id' : 1},
        success: function (result) {
            //alert(JSON.stringify(result));
              if (result.datas.error!=undefined) {
                alert(result.datas.error);                                   
            } else {
                alert(result.datas);                                                             
            }                      
        }           
    });
demo页里直接访问 localhost/test/index.html

2.第二种方式:后台向接口发送数据class Demo {
     private function http($url, $params, $method = 'GET', $header = array(), $multi = false)
    {
        $opts = [
            CURLOPT_TIMEOUT        => 30,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_HTTPHEADER     => $header
        ];
        /* 根据请求类型设置特定参数 */
        switch(strtoupper($method)){
            case 'GET':
                $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
                $opts[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36';
            break;
            case 'POST':
                //判断是否传输文件
                $params = $multi ? $params : http_build_query($params);
                $opts[CURLOPT_URL] = $url;
                $opts[CURLOPT_POST] = 1;
                $opts[CURLOPT_POSTFIELDS] = $params;
            break;
            default:
                throw new Exception('不支持的请求方式!');
        }

        /* 初始化并执行curl请求 */
        $ch = curl_init();
        curl_setopt_array($ch, $opts);
        $data = curl_exec($ch);
        $error = curl_error($ch);
        curl_close($ch);
        if($error) throw new Exception('请求发生错误:' . $error);
        return $data;
    }


    public function push()
    {
        $title="标题";//标题
        $content="这是个内容";//内容
        $id="1";
        $push = array(
                    'title'     => $title,
                    'content'   => $content,
                    'id'        => $id,
            );
        $url      ="http://localhost/test/index.php";
        $header[] = "Content-type: application/x-www-form-urlencoded";
        try {

            $response=$this->http($url,$push,'POST',$header);

            print_r($response);

        } catch (\Exception $e) {

            print_r($e->getMessage());
        }                
    }

}
    $demo = new Demo();
    $demo->push();
demo页里直接访问localhost/test/demo.php

接口代码class Index{

    public function index(){
        if ($_REQUEST['id'] == 1) {
            echo $this->output_data('id已获取正确');
        } else {
            echo $this->output_error('错误');
        }        
    }



    /**
     * 返还json错误信息
     * @param $str
     * @return string
     */
    function output_error($error,$data=array()){
        $return = array();
        $return['code'] = '-1';
        $return['error']  = $error;
        $this->output_data($return,$data);
    }

    /**
     * 返回json正确数据
     * @param $str
     * @return string
     */
    function output_data($datas, $extend_data = array()) {
        $data = array();
        if(!empty($extend_data)) {
            $data = array_merge($data, $extend_data);
        }
        $data['datas'] = $datas;
        if(!empty($_GET['callback'])) {
            echo $_GET['callback'].'('.json_encode($data).')';die;
        } else {
            echo json_encode($data);die;
        }
    }
}

    $index_demo = new Index();
    $index_demo->index();    
这就是全部内容,如果想下载,可以到http://www.bestmx.top/home/article/index/aid/19
最佳答案
评论( 相关
后面还有条评论,点击查看>>