App接口设计原则
2016-05-10 17:02
260 查看
近几年一直在做移动端的项目,每次制定标准都需要解释一遍,想想还是写一篇文章都记下来吧。
1、记住密码不是真的让你记住密码,这里仅仅指的是一种自动登录的手段。不管在任何地方,明文存储的密码都是安全隐患,是必须尽量避免的。你可以采用某种方式对用户名、密码以及时间戳(重要)进行签名,再次登录时使用签名后的数据进行登录。
2、客户端要包含超时机制,见过不止一次的服务端设计是通过客户端发送的userid来区分用户的。对此我真的已经无力吐槽了。最简单的办法是用session来记录用户状态。当然,考虑到客户端的特性,用户可能好几天都没有关闭一次,必须配合自动登录机制来保证客户端的在线。
3、接口请求成功或失败,需要有明确的标识符来表示。并且对错误原因进行描述。同时因为客户端可能是多语言的,错误原因应该设计为errorCode,由客户端根据errorCode来显示成对应的语言。
4、errorCode应该具有唯一性,例如登录超时使用10001,请求任意接口超时时都应该返回10001。方便客户端统一处理。
5、接口设计应统一,不能出现在登录接口中用户名称为username,获取用户详情接口变成nickname的情况。客户端与服务端尽量采用相同的业务模型划分。接口中属性应按照业务模型的归属关系分层。
我们来看看下面两个接口
因为两个接口中都包含人物对象,则人物的属性名应该是相同的。
再如下图是对同一个接口的两种设计
左侧这个是符合我们的原则的,而右边不符合。我们并不是说右边的设计不好,只是左边更加符合客户端MVC的划分。因为作者本身也是一个“人物”的业务模型,当我们点击作者头像的时候,应该进入该作者的简介。这个简介界面与我在好友列表中进入的是同一个界面。从界面初始化参数上来看,我们只需要把“人物”模型传递进去就可以了。
先写这么多,后续再补充吧
1、记住密码不是真的让你记住密码,这里仅仅指的是一种自动登录的手段。不管在任何地方,明文存储的密码都是安全隐患,是必须尽量避免的。你可以采用某种方式对用户名、密码以及时间戳(重要)进行签名,再次登录时使用签名后的数据进行登录。
2、客户端要包含超时机制,见过不止一次的服务端设计是通过客户端发送的userid来区分用户的。对此我真的已经无力吐槽了。最简单的办法是用session来记录用户状态。当然,考虑到客户端的特性,用户可能好几天都没有关闭一次,必须配合自动登录机制来保证客户端的在线。
3、接口请求成功或失败,需要有明确的标识符来表示。并且对错误原因进行描述。同时因为客户端可能是多语言的,错误原因应该设计为errorCode,由客户端根据errorCode来显示成对应的语言。
4、errorCode应该具有唯一性,例如登录超时使用10001,请求任意接口超时时都应该返回10001。方便客户端统一处理。
5、接口设计应统一,不能出现在登录接口中用户名称为username,获取用户详情接口变成nickname的情况。客户端与服务端尽量采用相同的业务模型划分。接口中属性应按照业务模型的归属关系分层。
我们来看看下面两个接口
因为两个接口中都包含人物对象,则人物的属性名应该是相同的。
再如下图是对同一个接口的两种设计
左侧这个是符合我们的原则的,而右边不符合。我们并不是说右边的设计不好,只是左边更加符合客户端MVC的划分。因为作者本身也是一个“人物”的业务模型,当我们点击作者头像的时候,应该进入该作者的简介。这个简介界面与我在好友列表中进入的是同一个界面。从界面初始化参数上来看,我们只需要把“人物”模型传递进去就可以了。
先写这么多,后续再补充吧
相关文章推荐
- iOS开发系列--数据存取
- android学习之路 Handler用法
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array
- iOS中集成ijkplayer视频直播框架
- 从零开始,打造自己的首个 iOS 框架
- Swift解读专题四——字符串与字符
- iOS开发------程序实现国际化Localizable
- Android 强大的图片加载缓存— Glide
- Android------startActivityForResult的详细用法
- Android屏幕保护KeyguardManager相关内容学习
- iOS开发经验总结(下)
- Android Studio 配置ADV发生异常“VT -x is desabled in BIOS”
- iOS开发经验总结(上)
- iOS中利用 runtime 一键改变字体
- Android 网易云课堂第一周笔记16/5/10
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?
- Android ScrollView如何设置maxHeight
- Android开发工具类之DownloadManagerPro
- Android代码中给获取到的数据添加空格的适配问题
- [置顶] android Git命令家底儿及Git数据通信原理详解