使用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"
:
"\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框架)的更多相关文章
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 示例浅谈PHP与手机APP开发,即API接口开发
示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...
- F5 api接口开发实战手册(二)
F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...
- 对飞猪H5端API接口sign签名逆向实验
免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...
- API接口开发 配置、实现、测试
Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到 ...
- python的flex服务端数据接口开发
python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...
- 利用postman进行api接口开发
场景: api接口开发时,经常使用一些工具来帮助设计开发.Yapi主要是在设计阶段进行api接口设计,统一前后端参数请求和返回体:swagger主要在开发阶段,用来显示实际上后端开发进度和接口情况:p ...
- 豆瓣API接口开发,结合angularJS来做,感觉爽歪歪!
第一次做还是先说下API 是什么鬼? API : application program interface 应用程序编程接口: 有那些常见的API: webAPI : 通过WEB方式提供结构叫 WE ...
- 移动端API接口优化的术和结果
最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生 ...
随机推荐
- JQuery效率问题
1,前言 我们开发了一个专题系统,生成了JSON的数据格式,采用JQuery动态插入HTML中,在前期的使用中,没有太大的问题,效率还可以接受,但是最近可能由于网络加之页面设计问题,我们的JS效率比较 ...
- 深度学习哪家强?吴恩达、Udacity和Fast.ai的课程我们替你分析好了
http://www.jianshu.com/p/28f5473c66a3 翻译 | AI科技大本营(rgznai100) 参与 | reason_W 引言 过去2年,我一直积极专注于深度学习领域.我 ...
- Python 和 Asyncio 编写在线多人游戏(一)
在技术和文化领域,大规模多人在线游戏(MMO)毋庸置疑是我们当今世界的潮流之一.很长时间以来,写一个 MMO 游戏这件事总是会涉及到大量的预算与复杂的底层编程技术.不过在最近这几年,事情迅速发生了变化 ...
- Google声明机器学习在自己定制的芯片比方普通的GPU和CPU快15到30倍
GOOGLE开发自己的加速机器学习的芯片已经不是什么秘密了,最先发布出来的是TPU(Tensor Processing Units),在2016年5月I/O开发大会上发布的.可是没有发布相关的细节情况 ...
- 无脑抢标——算了吧
第一版时,我对拍拍贷是恐惧的,缓解我的恐惧的方法,就是寻找尽可能安全的方案.然后,我就发现了这个策略:超过信用等级普通利率的标的.A标一般16,B一般18--那我就寻找大于16的A,大于18的B,C我 ...
- ASP入门(八)-Request对象
Request是ASP的耳朵,它可以获得客户端传递来的消息. BinaryRead方法和TotalBytes属性 用于以二进制方式读取客户端的请求,比如处理通过客户端上传文件时,通常使用这个方法来读取 ...
- 一个小栗子聊聊JAVA泛型基础
背景 周五本该是愉快的,可是今天花了一个早上查问题,为什么要花一个早上?我把原因总结为两点: 日志信息严重丢失,茫茫代码毫无头绪. 对泛型的认识不够,导致代码出现了BUG. 第一个原因可以通过以后编码 ...
- Rainmeter 一部分 语法 中文教程
;Meter基本元素示例:;如果是[MeterStyle]表示Meter的公共Style,类似CSS的意义!!!;颜色可以使用网页的颜色定义方式,如半透明黄色:255.255.0.128=FFFF00 ...
- 自己定义View Layout过程 - 最易懂的自己定义View原理系列(3)
前言 自己定义View是Android开发人员必须了解的基础 网上有大量关于自己定义View原理的文章.但存在一些问题:内容不全.思路不清晰.无源代码分析.简单问题复杂化等等 今天,我将全面总结自己定 ...
- 2012年5月阿里巴巴集团”去 IOE”运动的思考与总结【转载+整理】
原文地址 什么是 IOE,IOE 只是一个简称,分别代表 IBM.Oracle.EMC,确切地说是 IBM 小型机.Oracle 数据库与 EMC 存储设备的组合.这"三驾马车"构 ...