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":"\u82f9\u679c","high_price":"8.0","low_price":"5.0","address":"\u5929\u6d25\u5c0f\u767d\u697c\u6c34\u679c\u5e02\u573a","size":"2.0","weight":"2.0","remark":"\u6025\u9700...","fruit_pic":["http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/55599e7514815.png","http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/554f2dc45b526.jpg"]}}

使用PHP做移动端 api接口开发方法(适用于TP框架)的更多相关文章

  1. 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...

  2. 示例浅谈PHP与手机APP开发,即API接口开发

    示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...

  3. F5 api接口开发实战手册(二)

    F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...

  4. 对飞猪H5端API接口sign签名逆向实验

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  5. API接口开发 配置、实现、测试

    Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到 ...

  6. python的flex服务端数据接口开发

    python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...

  7. 利用postman进行api接口开发

    场景: api接口开发时,经常使用一些工具来帮助设计开发.Yapi主要是在设计阶段进行api接口设计,统一前后端参数请求和返回体:swagger主要在开发阶段,用来显示实际上后端开发进度和接口情况:p ...

  8. 豆瓣API接口开发,结合angularJS来做,感觉爽歪歪!

    第一次做还是先说下API 是什么鬼? API : application program interface 应用程序编程接口: 有那些常见的API: webAPI : 通过WEB方式提供结构叫 WE ...

  9. 移动端API接口优化的术和结果

    最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生 ...

随机推荐

  1. WinPcap权威指南(三):ARP协议

    ARP协议在局域网内使用的非常广泛,它的数据包类型分为请求包和答复包.Windows系统内部有一个缓冲区,保存了最近的ARP信息,可以在cmd下使用命令arp -a来显示目前的缓存,或者使用命令arp ...

  2. 在EntityFramework6中执行SQL语句【转】

    在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作.这一节我来介绍一下如何使用在EF6中执行SQL语句. 你可能要问,我用EF不就为了避免写SQL吗?如 ...

  3. asp.net获取当前网址url【转】

    设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.jb5 ...

  4. 菜鸟学步之 爆破AspriseOCR 4.0

    最近写一个小程序要用到OCR控件,在网上查了一下,据说AspriseOCR 4.0效果不错.试用了一下发现的确还行,不过就是要注册,试用版本每次都会弹出讨厌的对话框来.网上看到有一篇“新人报道–处女破 ...

  5. 文本框只能输入数字(兼容IE火狐)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. iOS开发-邮件发送

    Web开发的时候邮箱注册登录是必不可少的,手机号可以更换,不过相对而言,邮箱只是用于比较重要的时候用到,比如找工作的时候必填的邮箱,注册网站会员的邮箱验证.现在的手机和Web的其实操作是一样的,大多数 ...

  7. Cookie常用的优化方式

    我们知道,对于每一个http请求,无论是动态的网页aspx,还是jsp,还是/user/add这种MVC模式的URL,还是CSS或者JS文件,每一个http请求都会带着在硬盘上存有的跟这个域相关存有的 ...

  8. CRF分词的纯Java实现

    与基于隐马尔可夫模型的最短路径分词.N-最短路径分词相比,基于随机条件场(CRF)的分词对未登录词有更好的支持.本文(HanLP)使用纯Java实现CRF模型的读取与维特比后向解码,内部特征函数采用  ...

  9. 解决Ubuntu/debian的Apt-get 由于依赖关系安装失败的问题

    The following packages have unmet dependencies: libssl-dev: Depends: libssl0.9.8 (= 0.9.8k-7ubuntu8) ...

  10. Hdfs dfs命令使用

    如果是把数据放在了hdfs系统,那么我们如何访问他们呢? 1.hdfs查看文件夹 ./hdfs dfs -ls hdfs://mycluster/output/online/ 2.hdfs创建目录df ...