接口设计怎么写( 二 )


4、考虑移动端的网络情况和耗电量 如果让我们说出哪类app比较好,可能还不大好说,但是如果让我们说出哪些app很差,我们肯定会说出那些体积很大、占用内存多、界面很卡、费电的app 不好 。对于网络情况,接口应该具备为不同的网络提供不同的内容的能力如果我们能够知道用户的网络情况,只有在wifi的情况下才给用户传输封面图、缩略图 之类的,是不是可以帮用户节省很多流量呢5、通用的数据交换格式 目前,对于接口和客户端的数据交换格式,基本上就是三种,xml和json和webservice,而现在使用json的应该占大多数最麻烦的就是处理Date类型,因为JSON本身没有Date类型,因此,JSON库将Date类型的数据序列化时会转为String 。
这时,不同环境,不同平台,以及用不同的JSON解析库,转换后的结果经常会不同 。比如,你在开发机上可能得到的结果是”2016-1-1 17:11:11”,但放到服务器后结果却变成了“Jan 1,2016 5:11:11 PM” ,客户端进行反序列化时无疑会失败 。
后来,我取消了所有Date类型,统一采用时间戳表示,就再没有转化的烦恼了 。另外,接口的开发人员有时候会将一些数据错误地转换为了String,导致客户端使用时因类型错误而异常 。
例如,本来是数字的1,被转成 了"1",客户端做运算时就会出错,或用switch判断时也会出错,或其他无法转换的情况发生时;例如,为空时JSON正确地表示应该是null,但如 果转为了String就变成了"null",那问题就来了,我遇到的因为这个错误的转换导致的程序奔溃已经好几次了,第一次的时候,查了一整天才定位到问题所在6、接口统计功能 在做PC端网站的时候,我们都会给我们的网站加上个统计功能,要么自己e68a84e8a2ad62616964757a686964616f31333365653764写统计系统,要么使用第三方的比如GA 移 动端接口API则需要我们自己实现统计功能,这时就需要我们尽可能多的收集客户端的信息,除了传统的IP、User-Agent之外,还应该收集一些移动 相关的信息,比如手机操作系统,是android还是ios,都是什么版本,用户使用的网络状况,是2G、3G、4G还是WIFI 。客户端APP是什么版 本信息 。
7、客户端与服务端的肥瘦平衡 在移动开发中,由于客户端的修改会很费时费力,特 别是IOS应用还要经过Apple审核,另外,当前IOS开发人员、Android开发人员的人工成本普遍较高,人才紧缺,基于这两点,能在服务器端实现 的功能就不要放在客户端,毕竟服务器端程序的修改要比客户端方便、灵活、快捷的多 。8、隐式用户与显式用户 显式用户指的是,APP程序中有用户系统,一个username、password正确的合法用户,称之为显式的用户,通常显式用户都需要注册,登录以后能完成一些个人相关的操作 。
隐式用户指的是,APP程序本身就没有用户系统,或者一个在没有登录的情况下,使用我们APP的用户 。在这种情况下,可以通过客户端生成的UDID来标识一个用户 。
有了用户信息,我们就能够了解不同用户的使用习惯,而不仅仅是全体用户的一个整体的统计信息,有了这些个体的信息之后,就可以做一些用户分群、个性化推荐之类的事情 。9、安全问题 设计API第一个需要考虑的是API的安全机制 。
我负责的上一个项目,因为API的安全问题,就被人攻击了两次 。之后经过分析,主要存在两个漏洞: 一是因 为缺少对调用者进行安全验证的方式,二是因为数据传输不够安全 。
【接口设计怎么写】那么,制定API的安全机制,主要就是为了解决这两个问题:保证API的调用者是经过自己授权的App;保证数据传输的安全 。第一个问题的解决方案,我主要采用设计签名的方式 。