【转载】php如何给APP端写接口
如何写好接口
- 目的:清楚明白所写接口的用途
- 安全性:做好接口的安全性,防止接口数据泄露,做好必要的参数加密措施
- 按需分配: 接受值和返回值要实用,不接受和返回不需要的数据,返回值返回什么应与使用者时时沟通
- 规范性:参数命名规范有意义,让使用者一目了然;返回值要包含调用接口状态信息,返回数据格式最好使用JSON
- 日志:写接口调用日志,方便查到接口调用错误,实现监控和对接快捷
接口安全性与规范性参考
/**
* 用户登录接口
* 请求方式:post
* 接受参数:
* @param $mobile 用户名 -- 可逆 通过 urlencode(base64_encode()) 加密
* @param $pwd 加密密码 -- 可逆,同时定义一个加密规则
* return json
* {"code":int,"message":string,"data":array}
* 注意事项:
*
*/
public function login() {
$mobile = isset($_POST['mobile']) ? base64_decode(urldecode(escapeQuotes($_POST['mobile']))) : '';
$pwd = isset($_POST['pwd']) ? escapeQuotes($_POST['pwd']) : '';
$totp = isset($_POST['ttoken']) ? escapeQuotes($_POST['ttoken']) : '';
$commonmodel = self::getModel('common');
try {
// 检查参数
$commonmodel->checkRight($mobile, 'mobile');
$commonmodel->checkRight($pwd, 'pwd');
$commonmodel->checkRight($totp, 'ttoken');
// 验证登录
$usersmodel = self::getModel('users');
$res = $usersmodel->userLogin($mobile, $pwd);
} catch (Exception $e) {
$res = array(
'code' => 10000,
'message' => $e->getMessage()
);
}
// 写入接口日志
$des = "IP:" . getIp() . ";请求用户登录接口;返回:" . $res['message'];
$commonmodel->logResult('10001', $res['code'], $des); echo json_encode($res);
}
接受的参数,比如用户名和密码都进行了加密处理,密码可以定义一个更安全的加密规则,抓包查看请求参数也不会暴露用户数据。
调用接口写好接口日志,记录调用什么接口,返回状态码,接口返回详情等等。。。
返回值参考
{
code:0,
message: "success",
data: { key1: value1, key2: value2, ... }
}
- code: 返回状态码,1表示成功,非1表示各种不同的错误,10000可以用来表示客户端传参错误
- message: 描述信息,成功时为”success”,错误时则是错误信息
- data: 成功时返回的数据,类型为对象或数组
不同错误就要定义不同的返回状态码,这里举个例子:
状态码表
返回值 说明
10000 执行异常,一般为客户端传参出错
10001 用户不存在
10002 密码错误
10003 用户状态未激活
10004 redis保存值错误
10005 令牌(token)错误
10006 二维码序列错误
10007 验票错误
1 验证成功,返回需要信息
10000可以定义为客户端传入的参数有错,直接抛出异常,区别客户端与服务端之间的错误
本文转载至:http://blog.csdn.net/xwh670570759/article/details/52130585
【转载】php如何给APP端写接口的更多相关文章
- java为移动端写接口
java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...
- PC端写的API接口和手机端APP联合调试
一.遇到问题的情况:项目框架:asp.net MVC5 ,写的给手机端调用的API接口. 二.自己在本地 IIS上部署项目,在手机端的请求服务器上把地址和端口换上本地部署的,如图所示 三.用管理员的身 ...
- 用yii2给app写接口(下)
上一节里我们讲了如何用Yii2搭建一个能够给App提供数据的API后台应用程序.那么今天我们就来探讨下授权认证和通过API接口向服务器提交数据以及如何控制API接口返回那些数据,不能返回那些数据. 授 ...
- 客服端与服务端APP支付宝支付接口联调的那些坑
根据支付宝官方提供的文档的建议: TIPS:这一步应在商户服务端完成,商户服务端直接将组装和签名后的请求串orderString传给客户端,客户端直接传给SDK发起请求.文档和Demo是为了示例效果在 ...
- 利用缓存实现APP端与服务器接口交互的Session控制
与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次 ...
- 移动端API接口优化的术和结果
最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生 ...
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...
- 一个APP页面一个接口
目前所在的公司做的是健康产业方面的APP,这个产品包括了安卓和IOS还有web三方面,除了要写后台管理的系统外,还要写移动端的接口.第一次写移动端接口就犯了一个错误,以为和web一样是怎么方便怎么来, ...
- node+pm2+express+mysql+sequelize来搭建网站和写接口
前面的话:在这里已经提到了安装node的方法,node是自带npm的.我在技术中会用es6去编写,然后下面会分别介绍node.pm2.express.mysql.sequelize.有少部分是摘抄大佬 ...
随机推荐
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) E. Little Artem and Time Machine 树状数组
E. Little Artem and Time Machine 题目连接: http://www.codeforces.com/contest/669/problem/E Description L ...
- HDU 4577 X-Boxes
X-Boxes Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- 升/降压转换器 (Buck-boost)
升/降压转换器 (Buck-boost) 当输入电压是变动的,有时比输出电压高.有时却比较低时(例如放电中的电池),升/降压转换器 (Buck-boost) 是最佳的电源解决方案. 升/降压转换器 ( ...
- stdafx.h是什么用处, stdafx.h、stdafx.cpp的作用
http://blog.csdn.net/songkexin/article/details/1750396 stdafx.h头文件的作用 Standard Application Fram Exte ...
- VS2010下面Empty Project使用
VS2010下面Empty Project使用:1,添加代码HelloApp #include <afxwin.h> class CHelloApp:public CWinApp{publ ...
- 【redis】spring boot中 使用redis hash 操作 --- 之 使用redis实现库存的并发有序操作
示例: @Autowired StringRedisTemplate redisTemplate; @Override public void dealRedis(Dealer dealer) { d ...
- Java:Spi 小实战
背景 Java 中区分 Api 和 Spi,通俗的讲:Api 和 Spi 都是相对的概念,他们的差别只在语义上,Api 直接被应用开发人员使用,Spi 被框架扩张人员使用,详细内容可以看:http:/ ...
- PHP闭包--匿名函数
匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用的情况. ...
- iOS开源项目:JSONKit
一个Json解析库,其特点是代码简单,只有一个.h和.m文件. https://github.com/johnezang/JSONKit JSON(JavaScript Object Notation ...
- Qt 事件处理机制 (上篇)
本篇来介绍Qt 事件处理机制 .深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集. 大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制. ...