• 使用PHP做移动端 api接口开发方法(适用于TP框架)


    1. [代码]使用TP框架时 放在common文件夹下文件名就叫function.php     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php
     
    /*************************** api开发辅助函数 **********************/
     
    /**
     * @param null $msg    返回正确的提示信息
     * @param flag success CURD 操作成功
     * @param array $data  具体返回信息
     * Function descript: 返回带参数,标志信息,提示信息的json 数组
     *
     */
    function returnApiSuccess($msg = null,$data = array()){
        $result = array(
            'flag' => 'Success',
            'msg' => $msg,
            'data' =>$data
        );
        print json_encode($result);
    }
     
    /**
     * @param null $msg    返回具体错误的提示信息
     * @param flag success CURD 操作失败
     * Function descript:返回标志信息 ‘Error’,和提示信息的json 数组
     */
    function returnApiError($msg = null){
        $result = array(
            'flag' => 'Error',
            'msg' => $msg,
        );
        print json_encode($result);
    }
     
    /**
     * @param null $msg    返回具体错误的提示信息
     * @param flag success CURD 操作失败
     * Function descript:返回标志信息 ‘Error’,和提示信息,当前系统繁忙,请稍后重试;
     */
    function returnApiErrorExample(){
        $result = array(
            'flag' => 'Error',
            'msg' => '当前系统繁忙,请稍后重试!',
        );
        print json_encode($result);
    }
     
    /**
     * @param null $data
     * @return array|mixed|null
     * Function descript: 过滤post提交的参数;
     *
     */
     
      function checkDataPost($data = null){
        if(!empty($data)){
            $data = explode(',',$data);
            foreach($data as $v){
                if((!isset($_POST[$v]))||(empty($_POST[$v]))){
                    if($_POST[$v]!==0 && $_POST[$v]!=='0'){
                        returnApiError($v.'值为空!');
                    }
                }
            }
            unset($data);
            $data = I('post.');
            unset($data['_URL_'],$data['token']);
            return $data;
        }
    }
     
    /**
     * @param null $data
     * @return array|mixed|null
     * Function descript: 过滤get提交的参数;
     *
     */
    function checkDataGet($data = null){
        if(!empty($data)){
            $data = explode(',',$data);
            foreach($data as $v){
                if((!isset($_GET[$v]))||(empty($_GET[$v]))){
                    if($_GET[$v]!==0 && $_GET[$v]!=='0'){
                        returnApiError($v.'值为空!');
                    }
                }
            }
            unset($data);
            $data = I('get.');
            unset($data['_URL_'],$data['token']);
            return $data;
        }
    }

    2. [代码]查询单个果品详细信息     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    /**
        * 发布模块
        *
        * 获取信息单个果品详细信息
        *
        */
       public function getMyReleaseInfo(){
           //检查是否通过post方法得到数据
           checkdataPost('id');
           $where['id'] =  $_POST['id'];
           $field[] = 'id,fruit_name,high_price,low_price,address,size,weight,fruit_pic,remark';
           $releaseInfo = $this->release_obj->findRelease($where,$field);
           $releaseInfo['remark'] =  mb_substr($releaseInfo['remark'],0,49,'utf-8').'...';
           //多张图地址按逗号截取字符串,截取后如果存在空数组则需要过滤掉
           $releaseInfo['fruit_pic'] =  array_filter(explode(',', $releaseInfo['fruit_pic']));
           $fruit_pic = $releaseInfo['fruit_pic'];unset($releaseInfo['fruit_pic']);
           //为图片添加存储路径
           foreach($fruit_pic as $k=>$v ){
               $releaseInfo['fruit_pic'][] =  'http://'.$_SERVER['HTTP_HOST'].'/Uploads/Release/'.$v;
           }
           if($releaseInfo){
               returnApiSuccess('',$releaseInfo);
           }else{
               returnApiError( '什么也没查到(+_+)!');
           }
       }

    3. [代码]findRelease() 方法的model     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
        * 查询一条数据
        */
       public function findRelease($where,$field){
           if($where['status'] == '' || empty($where['status'])){
               $where['status'] = array('neq','9');
           }
           $result = $this->where($where)->field($field)->find();
           return $result;
       }

    4. [代码]app端接收到的数据(解码json之后:json_decode();)     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    {
        "flag": "success",
        "message": "",
        "responseList": {
            "id": "2",
            "fruit_name": "苹果",
            "high_price": "8.0",
            "low_price": "5.0",
            "address": "天津小白楼水果市场",
            "size": "2.0",
            "weight": "2.0",
            "remark": "急需...",
            "fruit_pic": [
                "http://fruit.txunda.com/Uploads/Release/201508/55599e7514815.png",
                "http://fruit.txunda.com/Uploads/Release/201508/554f2dc45b526.jpg"
            ]
        }
    }

    5. [代码]app端接收到的数据(原生json串) 

    {"flag":"success","message":"","responseList":{"id":"2","fruit_name":"u82f9u679c","high_price":"8.0","low_price":"5.0","address":"u5929u6d25u5c0fu767du697cu6c34u679cu5e02u573a","size":"2.0","weight":"2.0","remark":"u6025u9700...","fruit_pic":["http://fruit.txunda.com/Uploads/Release/201508/55599e7514815.png","http://fruit.txunda.com/Uploads/Release/201508/554f2dc45b526.jpg"]}}

  • 相关阅读:
    java学习笔记 --- 网络编程(网络的基础知识)
    java学习笔记 --- 多线程(线程安全问题——同步代码块)
    java学习笔记 --- 多线程(多线程的控制)
    java学习笔记 --- 多线程(多线程的创建方式)
    java学习笔记 --- 多线程(1)
    java学习笔记 --- IO流小结
    java学习笔记 --- IO(3)
    java学习笔记 --- IO(2)
    java学习笔记 --- IO(1)
    把测试错误的图像重新挑选出来进行测试
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/6429679.html
Copyright © 2020-2023  润新知