此篇介绍一下App与服务器通信接口设计的一些知识。
安全设计
内部接口
- 可以使用OAuth1.0签名算法:
将密钥和所有参数组合成源串,根据签名算法生成签名值,发送请求时将签名一起发送给服务器进行验证。
开放外部接口
-
使用HTTPS
HTTPS在HTTP的基础上添加了SSL安全协议,自动对数据进行压缩加密,在一定程度上可以防止监听、劫持、重发,安全性可以提高很多 -
增加验证token方式
用户用密码登录成功后,服务器返回token给客户端;
客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;
服务器检查token的有效性,有效则返回数据,若无效,分两种情况:
(1)token错误,这时需要用户重新登录,获取正确的token
(2)token过期,这时客户端需要再发起一次认证请求,获取新的token
-
增加appKey
给每个端分配一个appKey,比如Android、iOS、微信三端,每个端分别分配一个appKey和一个密钥。没有传appKey的请求将报错,传错了appKey的请求也将报错。这样,安全性方面又加多了一层防御,同时也方便对不同端做一些不同的处理策略。 -
手机号+短信验证码
数据格式
{
code:0,
message: "success",
data: { key1: value1, key2: value2, ... }
}
不同错误需要返回不同的错误码。
错误信息一般有两种用途:一是客户端开发人员调试时看具体是什么错误;二是作为App错误提示直接展示给用户看。
版本设计
- 每个接口有各自的版本,一般为接口添加个version的参数
- 整个接口系统有统一的版本,一般在URL中添加版本号,比如http://api.domain.com/v2/xxx