设计和开发一个接口

简介: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:jeff wong链接:http://www.zhihu.com/question/29160554/answer/44419486来源:知乎设计和开发一个接口,至少要考虑到: 1、功能 2、性能 3、安全 4、易用 5、可扩展 6、可维护 7、可测试 8、可运维 9、协议多样 10、互联互通平台无关。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:jeff wong
链接:http://www.zhihu.com/question/29160554/answer/44419486
来源:知乎

设计和开发一个接口,至少要考虑到:
1、功能 2、性能 3、安全 4、易用 5、可扩展 6、可维护 7、可测试 8、可运维 9、协议多样 10、互联互通平台无关。
 
 
就说这个登录接口,你至少要考虑到登录渠道,密码存储安全,数据传输安全,试错操作日志,敏感信息是否可记录日志,黑白名单等等。ps:问某一个功能接口还可以凭经验告诉你,你问的是一整个系统的接口,你能给我点咨询费用不?QQ币也是可以的。
 

最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 

1、效率:接口访问速度 
APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所有在开发过程中尽量选择效率高的框架,PHP建议使用YAF框架。 

2、数据格式 
最好使用JSON格式数据,因为JSON有较好的跨平台性。对于 

3、数据量 
按需分配,APP客户端需要什么数据就返回什么数据,过多的数据量影响处理速度,最重要的是影响传输效率。 

4、接口、参数命名准确 
无论是接口还是参数,命名都应该有意义,让人一目了然。 

5、一个页面尽可能就用一个接口 
现在很多的APP页面都有广告、焦点图、文章列表等,对于这些不同格式的数据,不可能都分配一个接口,这样加大了APP请求接口数,影响响应速度。建议服务器端尽可能处理好数据后通过一个接口返回给APP客户端。 

6、缓存 
这点比较重要,不管是文件缓存还是memcache缓存。 

7、接口要有可扩展性 

8、接口安全 
目前一般都是在APP客户端和服务器通过约定的算法,对传递的参数值进行验证匹配。但是如果APP程序被反编译,这些约定的算法就会暴露,特别是在安卓APP中,有了算法,完全就可以通过验证模拟接口请求。

 9、接口版本控制 
对于接口版本控制,自己目前也没有找到一个好的方法,怎么去应对不断的APP版本升级,新、旧接口的处理。 

10、接口数据、状态 
接口必须提供明确的数据状态信息,不管是成功的,还是失败的,都必须返回给APP客户端。 以上10点就是自己在这端时间做APP接口过程中注意的事项,写的有点乱,想到什么就写什么。

目录
相关文章
|
16天前
|
存储 设计模式 Java
为什么我们在程序开发设计中要基于接口而非实现编程?
为什么我们在程序开发设计中要基于接口而非实现编程?
38 1
|
2月前
|
JSON 前端开发 API
一文讲清 API 接口的概念、设计和实现
总结 在这个例子中,我们创建了一个简单的Express服务器,并定义了一个/api/auth/login的POST接口来处理登录请求。我们使用body-parser中间件来解析请求体中的JSON数据,并在接口内部进行简单的用户名和密码验证。
|
3月前
|
Java
设计接口的几种方法
设计接口的几种方法
|
5月前
|
安全 前端开发 NoSQL
如果让你设计一个接口,你会考虑哪些问题?
接口设计需关注参数校验、扩展性、幂等性、日志、线程池隔离、异常重试、异步处理、查询优化、限流、安全性、锁粒度和避免长事务。入参与返回值校验确保数据正确性;考虑接口扩展性以适应不同业务需求;幂等设计防止重复操作;关键接口打印日志辅助问题排查;核心接口使用线程池隔离确保稳定性;异常处理中可采用重试机制,注意超时控制;适合异步的场景如用户注册后的通知;并行查询提升性能;限流保护接口,防止过载;配置黑白名单保障安全;适当控制锁粒度提高并发性能;避免长事务影响系统响应。
|
11月前
|
程序员 C++
论接口的封装能力
论接口的封装能力
46 0
|
缓存 算法 安全
这才叫 API 接口设计!
一家公司的每个系统都会有各种各样的接口,但是大部分公司,特别是传统行业的公司的所谓接口文档更多是当每个系传统的 word 文本格式,这种传统的格式有着人尽皆知的痛点: 1. 维护不及时; 2. 与代码不同步; 3. 归档后“便束之高阁”; 4. 接口文档跟代码没有互动; 5. 文本检索无法建立全局搜索,需要额外借助工具。 为了解决上述的问题,需要建立一套行之有效的接口管理体系,该体系的目标是: 1. 能够进行接口文档管理,作为后续的接口治理的其中一部分; 2. 能作为接口测试的平台,这样能保证接口跟代码是同步的; 3. 支持文本检索。
|
SQL 负载均衡 Java
怎么设计一个高质量的接口API设计
什么是幂等性?对于同一笔业务交易,不管调用多少次,只会成功处理一次。二、幂等性设计我们转账业务为例,来说明一下这个问题,转账接口一定要做到幂等性,否则会出现重复转账的问题。调用转账接口从A中转100元资金给B,参数中会携带业务流水号biz_no和源账户A,目的账户B,和转账金额100,业务流水号biz_no是唯一的。转账接口实现有以下实现方式。
|
SQL JSON Java
Java开发业务接口规范
规范点 说明 推荐方式 等级 文档唯一性 文档出处来源(人员和设备)必须统一,建议文档服务器,统一发布人。   重要 接口环境 要明确给出各个环境的调用地址。
4933 0
|
安全 前端开发 物联网
接口设计篇《怎么设计好的接口?》
这样设计接口【升职加薪】?
410 0
|
存储 前端开发 安全
接口测试平台代码实现43:接口底层请求逻辑
接口测试平台代码实现43:接口底层请求逻辑
接口测试平台代码实现43:接口底层请求逻辑