app接口的简单案例 和一些总结
常用的接口形式(即下面的 例二):
开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8
(客户端)数据的提交:
php 通过CURL 发送http的post请求 http://www.cnblogs.com/wangyuman26/p/5545370.html
(服务端)数据的接收:
$data=file_get_contents("php://input"); //获取输入的数据流
$jsonArray = json_decode($data, true); //将获得的数据进行对象序列化,返回array
(服务端)数据的返回:
echo json_encode($array);
例一:
通过接口获取一篇文章。
接口需要传入文章的id,通过sql语句向数据库查询文章的内容,然后以json的格式echo出即可,
即:安卓或IOS工程师获取通过接口获取到了json格式的数据,在做进一步的处理,显示在手机上。
说明:开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Get方式,字符编码均使用utf-8。
例二:
开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8。
说明:①设置接口接口返回值编码 header("Content-type:text/plain;charset=UTF-8");
②因为为Post方式提交数据,所以提交数据可以使用Json的格式,如:
data='{
"serviceName": "login",
"queryParameters": {
"password": "123456",
"mobile": "xxxxxxxxxx"
}
}'
IndexController.class.php class IndexController extends Controller { public function index(){ header("Content-type:text/plain;charset=UTF-8"); $index = new IndexService(); $array = $index->index(); echo json_encode($array); } } IndexService.class.php class IndexService { public function index(){ $array['status'] = 1; $array['comment'] = '参数不全!'; try{ $data=file_get_contents("php://input"); //获取输入的数据流 $jsonArray = json_decode($data); //将获得的数据进行对象序列化。 $serviceName = $jsonArray->serviceName; $param = $jsonArray->queryParameters; /***********************************************************************************/ switch($serviceName){ case 'login': $member = new MemberService(); $array = $member->login($param); break; case 'orderDetail': $order = new OrderService(); $array = $order->orderDetail($param); break; //…………………… } /*************************************************************************************/ }catch (Exception $ex){ $array['status'] = 1; $array['comment'] = '程序错误:'.$ex->getMessage(); } return $array; } } OrderService.class.php class OrderService { //订单详情。 public function orderDetail($param){ $orderId = $param->orderid; $order = M('Order'); $map['id'] = $orderId+0; $rs = $order->where($map)->find(); $array['status'] = 1; $array['comment'] = '未查到数据!'; if($rs){ $rs['crosscity'] = $this->crossCity($rs['id']); $array['status'] = 0; $array['data'] = $rs; $array['comment'] = '查询成功!'; } return $array; } }
接口说明文档(范文1):
开发者 版本 说明 日期
XXX 1.0 原始开发 XXX
说明
本接口供休息休息项目中Android+IOS上的APP调用,开发语言为PHP,数据格式为Json,传输协议为http,提交数据为Post方式,字符编码均使用utf-8。
接口地址
http://xxxxxx.com
一:获取用户资料 memberInfo
提交数据:
{
"serviceName": "memberInfo",
"queryParameters": {
"userid": "xx"
}
}
参数说明:
参数 必填 类型 说明
serviceName 是 varchar 指令:memberInfo
queryParameters 是 数组
userid 是 int 会员id
返回数据:
{
"status": "0",
"comment": "成功获取个人信息",
"responseParameters": {
"id": "21",
"companyid": "5"
………………
}
}
参数说明 :
参数 类型 说明
status Int 返回状态:
0成功
1错误原因1
2错误原因2
comment Varchar 注释
项目中的总结:
1:接口的返回值中的数据,最好同意都是字符串类型,方便IOS和安卓开发人员的处理。
{
"status": 0, //这个可以不是字符串
"comment": "发送成功...",
"data": { //里面的最好都是字符串类型
"id": "22",
"verify-phone": "1316113129X",
"verify-code": "644115"
}
}
即:变量都为字符串类型,有引号包着。或者使用类型转换函数strval(),转换为字符串类型。
2:设置接口返回值的编码
使用header函数
在控制器或页面里面header("content-type:text/html; charset=utf-8");
3:安全性
①需要有一个加密规则
即每次请求接口,需要根据规则加密一段字符串,接口那边也根据规则加密一段字符串,判断与接收的字符串是否一致,如果一致允许本次的请求。
规则比如可以是:md5(“项目简称”+“请求接口的名称”+“固定的几个字母”)
②接收的参数为整型时,要做强制转化为整型处理
③接收的参数为字符串时,要做处理
4:要考虑低版本的兼容
-1、版本更新后,要考虑对低版本的功能是否有影响
//版本升级:新添加的参数 (逻辑层需要新增参数,加默认值来兼容旧版本。) $new_driverid = isset($param->new_driverid) ? intval($param->new_driverid) : -1;