编写API应该考虑那些问题
2016-11-21 22:34
302 查看
编写API应该考虑那些问题
安全机制的设计:动态token、https、对称加密与非对称加密
接口数据的设计:良好的相应速度、跨平台性
接口版本的设计:良好的说明文档、测试程序、接口数据、状态
接口框架
:slim rap文档
优化接口:restful风格
接口版本的切换(迭代设计)
公共接口的安全设计
1、考虑接口的跨平台性
编写的接口要支持Android/iOS ,采用通用的解决方案,通信协议就采用最常用的HTTP协议,如果是即时通信,可以采用开放的XMPP协议,做游戏的可以采用可靠的TCP协议。
2、良好的响应速度
接口应该以最快的速度将数据返回给请求者,数据量按需分配,APP客户端需要什么数据就返回什么数据。
3、安全问题
解决安全问题主要是保证API的调用者是经过自己授权的App;
保证数据传输的安全。
第一个问题我是采用了动态TOKen的方法,登陆时产生一个token,存入到memcache缓存中,登陆成功后将这个token返回给客户端,下次用户请求时携带新生成的token等一系列参数到服务器端,在服务器端取出memcache中的token,根据前后端约定的规则生成新的token,然后将这两个token进行对比,如果相同则证明是授权的APP。
第二个问题的解决方案,主要就是采用 HTTPS了。HTTPS因为添加了SSL安全协议,自动对请求数据进行了压缩加密,在一定程序可以防止监听、防止劫持、防止重发,主要就是防止中间人攻 击。因此,为了安全考虑,建议对SSL证书进行强校验,包括签名CA是否合法、域名是否匹配、是不是自签名证书、证书是否过期等。
接口的安全工作不能马虎,暴力破解啊、SQL Injection啊、伪造请求和数据啊、重复提交啊也要考虑到。
4、良好的接口说明文档和测试程序
接口文档要清晰、明了,包含多少个接口,每个接口的地址、参数、请求方式、数据交换格式、参数是否必填、编码格式UTF8,返回值等都要写清楚。
5、接口数据、状态
接口必须提供明确的数据状态信息,不管是成功的,还是失败的,都必须返回给APP客户端。
6、接口、参数命名准确。
无论是接口还是参数,命名都应该有意义,让人一目了然。接口调试技巧前提必须放在外网上
1)服务端return 调试信息,客户端调用并显示结果,
2)在服务端将结果保存成文件在打开文件查看,即日志型调试(或建临时表放在数据库表里)
考虑突然断网或接口信息返回超时异常情况的业务处理(先扣金额更新状态,如有问题自动返回)
7、restful风格
一句话就是:面向资源
使用简单的url和http请求接口来实现接口
用标准的http协议来完成逻辑操作
更安全、简洁
在REST规则中,有两个基础概念:对象、行为
对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user
行为有4种常用的:查看、创建、编辑、删除
rest的提出者很巧妙的利用http现有方法来对应这4种行为:
GET - 查看
POST - 创建
PUT - 编辑
DELETE - 删除
http://baike.baidu.com/link?url=5wmWvmXTDHFJE54mVXJDdO9IfOaDn4QC92Njo7Jmb8SfVqD6nB_krwOzENqize8UWLv1pzcmP1fEkjmv-vjqKK
http://www.cnblogs.com/jifeng/p/5138887.html
8、接口版本的切换
把原来的接口copy一份,然后进行开发,建一个版本的表,前端请求过来的时候携带一个版本号的参数
9、公共接口安全的设计
可以通过检测指定机器ip请求频率就可以解决,如果发现某个ip请求频率很高,可以给它弹出一个验证码或者直接禁止它的请求。
安全机制的设计:动态token、https、对称加密与非对称加密
接口数据的设计:良好的相应速度、跨平台性
接口版本的设计:良好的说明文档、测试程序、接口数据、状态
接口框架
:slim rap文档
优化接口:restful风格
接口版本的切换(迭代设计)
公共接口的安全设计
1、考虑接口的跨平台性
编写的接口要支持Android/iOS ,采用通用的解决方案,通信协议就采用最常用的HTTP协议,如果是即时通信,可以采用开放的XMPP协议,做游戏的可以采用可靠的TCP协议。
2、良好的响应速度
接口应该以最快的速度将数据返回给请求者,数据量按需分配,APP客户端需要什么数据就返回什么数据。
3、安全问题
解决安全问题主要是保证API的调用者是经过自己授权的App;
保证数据传输的安全。
第一个问题我是采用了动态TOKen的方法,登陆时产生一个token,存入到memcache缓存中,登陆成功后将这个token返回给客户端,下次用户请求时携带新生成的token等一系列参数到服务器端,在服务器端取出memcache中的token,根据前后端约定的规则生成新的token,然后将这两个token进行对比,如果相同则证明是授权的APP。
第二个问题的解决方案,主要就是采用 HTTPS了。HTTPS因为添加了SSL安全协议,自动对请求数据进行了压缩加密,在一定程序可以防止监听、防止劫持、防止重发,主要就是防止中间人攻 击。因此,为了安全考虑,建议对SSL证书进行强校验,包括签名CA是否合法、域名是否匹配、是不是自签名证书、证书是否过期等。
接口的安全工作不能马虎,暴力破解啊、SQL Injection啊、伪造请求和数据啊、重复提交啊也要考虑到。
4、良好的接口说明文档和测试程序
接口文档要清晰、明了,包含多少个接口,每个接口的地址、参数、请求方式、数据交换格式、参数是否必填、编码格式UTF8,返回值等都要写清楚。
5、接口数据、状态
接口必须提供明确的数据状态信息,不管是成功的,还是失败的,都必须返回给APP客户端。
6、接口、参数命名准确。
无论是接口还是参数,命名都应该有意义,让人一目了然。接口调试技巧前提必须放在外网上
1)服务端return 调试信息,客户端调用并显示结果,
2)在服务端将结果保存成文件在打开文件查看,即日志型调试(或建临时表放在数据库表里)
考虑突然断网或接口信息返回超时异常情况的业务处理(先扣金额更新状态,如有问题自动返回)
7、restful风格
一句话就是:面向资源
使用简单的url和http请求接口来实现接口
用标准的http协议来完成逻辑操作
更安全、简洁
在REST规则中,有两个基础概念:对象、行为
对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user
行为有4种常用的:查看、创建、编辑、删除
rest的提出者很巧妙的利用http现有方法来对应这4种行为:
GET - 查看
POST - 创建
PUT - 编辑
DELETE - 删除
http://baike.baidu.com/link?url=5wmWvmXTDHFJE54mVXJDdO9IfOaDn4QC92Njo7Jmb8SfVqD6nB_krwOzENqize8UWLv1pzcmP1fEkjmv-vjqKK
http://www.cnblogs.com/jifeng/p/5138887.html
8、接口版本的切换
把原来的接口copy一份,然后进行开发,建一个版本的表,前端请求过来的时候携带一个版本号的参数
9、公共接口安全的设计
可以通过检测指定机器ip请求频率就可以解决,如果发现某个ip请求频率很高,可以给它弹出一个验证码或者直接禁止它的请求。
相关文章推荐
- 代码编写应该考虑的问题
- .NET方向高级开发人员面试时应该事先考虑的问题
- 插件模型应该考虑的问题
- .NET方向高级开发人员面试时应该事先考虑的问题 (zz)
- Web 应用开发时应该考虑的安全问题
- 每个软件都应该考虑的问题
- 找工作时最应该考虑的问题
- 在编写SQL语句时应该注意的一些小问题;
- 大型Web架构应该考虑的问题--转--修改
- 做企业集成应该考虑什么问题 (.NET / J2EE 视角)
- 以后不要考虑那些生活中的细节问题,什么事做到问心无愧即可!
- 公司应该考虑的几个问题
- 谈2.0网站初期规划应该考虑的问题[转载]
- 谈2.0网站初期规划应该考虑的问题
- 在Vista系统下.NET开发者应该考虑的五个安全问题
- 编写软件测试计划需要考虑的几个问题
- 谈2.0网站初期规划应该考虑的问题
- 谈web2.0网站初期规划应该考虑的问题[转载]
- OA软件商和企业都应该考虑的问题
- C#编写的时候应该注意哪些问题?