此篇介绍一下App与服务器通信接口设计的一些知识。

安全设计

内部接口

  1. 可以使用OAuth1.0签名算法:
    将密钥和所有参数组合成源串,根据签名算法生成签名值,发送请求时将签名一起发送给服务器进行验证。

开放外部接口

  1. 使用HTTPS
    HTTPS在HTTP的基础上添加了SSL安全协议,自动对数据进行压缩加密,在一定程度上可以防止监听、劫持、重发,安全性可以提高很多

  2. 增加验证token方式

用户用密码登录成功后,服务器返回token给客户端;
客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;
服务器检查token的有效性,有效则返回数据,若无效,分两种情况:
(1)token错误,这时需要用户重新登录,获取正确的token
(2)token过期,这时客户端需要再发起一次认证请求,获取新的token
  1. 增加appKey
    给每个端分配一个appKey,比如Android、iOS、微信三端,每个端分别分配一个appKey和一个密钥。没有传appKey的请求将报错,传错了appKey的请求也将报错。这样,安全性方面又加多了一层防御,同时也方便对不同端做一些不同的处理策略。

  2. 手机号+短信验证码

数据格式

{
 code:0,
 message: "success",
 data: { key1: value1, key2: value2, ... }
}

不同错误需要返回不同的错误码。
错误信息一般有两种用途:一是客户端开发人员调试时看具体是什么错误;二是作为App错误提示直接展示给用户看。

版本设计

  1. 每个接口有各自的版本,一般为接口添加个version的参数
  2. 整个接口系统有统一的版本,一般在URL中添加版本号,比如http://api.domain.com/v2/xxx