【转载】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.有少部分是摘抄大佬 ...
随机推荐
- VK Cup 2016 - Qualification Round 1 (Russian-Speaking Only, for VK Cup teams) A. Voting for Photos 水题
A. Voting for Photos 题目连接: http://www.codeforces.com/contest/637/problem/A Description After celebra ...
- python函数 divmod
divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: a,b可以为数字(包括复数) from 2. Add ...
- 深入浅出JDBC-快速入门
一.目录 二.概述 简述 JDBC是什么?JDBC英文名为:Java Data Base Connectivity(Java数据库连接),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连 ...
- Java过滤任意(script,html,style)标签符,返回纯文本--封装类
import java.util.regex.Pattern; /** * 过滤标签字符串,返回纯文本 * */ public class ChangePlainText { ...
- iis实现点击文件下载而不是打开文件
我们平时在搭建网站时,企业网站难免会做一些文档提供给用户下载,有时候我们会遇到提供EXE文件给客户下载时 客户打开文档链接时提示“无法找到该网页”也就是说我们的IIS环境不能下载EXE文件: IIS网 ...
- Small tips of APP H5 page
在开发日常落地页的时候,每当碰到一些很酷炫的宣传图用css实现很复杂且耗时的时候,一般采取切图然后将其放在页面中,在这个过程中发现<img/>标签中图片下方会有一行小空白,影响了与后一部分 ...
- Photoshop的版本体系
Photoshop CS6 和Photoshop CC的区别 没有什么玄乎的,仅仅是版本不一样. 版本的命名 Photoshop CS6 是CS系列的最后一版本, Adobe Photoshop CS ...
- 【javaw.exe 两个】启动了两个javaw.exe 相关
大家开发 肯定见过 两条并存的现象吧! 关闭方式1: 在任务管理器中,挑选 内存占用较小的 那个 关闭即可!! 关闭方式2: 1.查找对应的端口占用的进程:netstat -aon|findstr ...
- Java性能监控工具:VisualVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- OpenCV学习(8) 分水岭算法(2)
现在我们看看OpenCV中如何使用分水岭算法. 首先我们打开一副图像: // 打开另一幅图像 cv::Mat image= cv::imread("../to ...