如何设计移动App的服务器接口

App作为移动客户端软件,基于手机硬件的限制,App的电量、流量、加载时间对App的重要性不言而喻,在此根据个人的一些经验做一些接口设计上的总结分享,当然还是那句话,旨在抛砖引玉。

1、业务基础参数
互联网依托于大数据,数据来源于接口和数据埋点,所以接口设计中,公共参数的设计尤其重要,以下是个人对公共参数的理解:
版本、平台、渠道、设备id、型号、网络等

2、安全设计
说到安全,就会涉及到用户信息,以及用户状态,涉及到用户相关的请求,对安全涉及的需求就比较高,接口安全设计主要有以下流程:
1、用户用密码登录成功后,服务器返回token给客户端;
2、客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;
3、token有效,返回正常数据业务;token错误,返回相关业务码,客户端进行重登陆获取token;token过期,客户端发起再认证,获取有效token;
还有目前银行类业务使用的一种加密方式,使用HTTPS的安全协议,相对于Http协议,添加了一层SSL的安全协议,自动对数据的进行高强度的安全传输以及监听,但是其成本亦较高,一半对安全没有那么高的App的还是采用Http的方式进行数据传输。
参数校验,是目前很流行的一种接口参数的校验方式,主要原理,就是客户端动态获取服务器分发的key,使用这个秘钥和所有参数,以某种顺序组成的字符串,然后对这个字符串进行签名,请求时,把签名后的字符串一起发送给服务器,服务器进行参数校验;
在上述的参数签名的基础上,可以把所有的参数串进行加密处理,服务器进行解密后再进行参数校验,是进一步的安全处理;
现在针对登陆注册流程,很多app都直接采用了手机号的登陆流程,直接依托于第三芳短信平台进行相关的登陆业务的支持,其好处:简化用户登陆注册流程,不再涉及密码相关管理;

3、接口数据设计
接口数据一般都是采用json数据格式,json有以下六种数据类型:
Number:整数或浮点数
String:字符串
Boolean:true 或 false
Array:数组包含着方括号[]中
Object:对象包含在大括号{}中
Null:空类型
个人对接口数据的要求并不多,首先要保证接口数据【key:value】的json数据格式;对于基本数据的空数据,需要无业务含义的默认值,比如string返回”“、number返回-1、array返回[];允许object类型数据返回null;
移动接口数据结构基本都是以{“stateCode”:3000,”detailMessage”:”“,”data”:{}}结合,拿stateCode做成功失败判断,以及失败原因,成功后解析data数据;

4、接口的版本管理
这里说的版本管理,有两个版本的概念,一个是接口系统的版本,比如接口url中带的V1、V4等,另外的一个版本概念就是客户端的版本的概念;
在一个接口中做新旧版本的支持,都是在接口实现中,根据客户端的versionCode进行版本维度的兼容,这里尤其需要注意哪些业务逻辑是需要区分版本,避免不必要的版本兼容问题的出现;
如果整个业务发生了较大的变动,或者接口底层服务发生了变化,需要对整个Api进行升级,这个时候就需要对整套Api进行升级。

5、接口测试
接口质量是App质量中的很关键的一个维度,接口的响应时间和接口大小又决定着接口质量,接口的测试,都是App迭代中的重要一环。

6、其他
接口设计上的,预加载;接口数据的本地缓存过期策略等等,都是对客户端的性能的一个提升的维度。

你可能感兴趣的:(如何设计移动App的服务器接口)