API接口设计(3):全局规范汇总

最佳实践

汇总API接口设计的一些常见的最佳实践

安全与升级

1.版本管理

无论是小程序,还是app,还是Web网站,都需要版本升级,而提前设计好版本,可以避免因为升级导致旧的服务无法正常工作。
需要要保证在升级的时候,新旧版本的服务都能正常提供服务。

2.授权认证

大部分接口都是需要授权认证的,因此要对接口的授权认证进行判断,这样可以过滤掉大部分的非法访问。
可以通过token校验实现

3.签名校验

  • sign生成算法
  • 接口有效时间限制,可以根据timestamp判断

接口设计规范

4.统一返回数据格式

  • 统一返回正常值
  • 统一返回错误/异常

5.统一设计分页

统一分页返回
– 减少资源的返回
– 减少服务器的开销

6.幂等设计

防重和幂等设计其实是有区别的,防重主要为了避免产生重复数据,把重复请求拦截下来即可。而幂等设计除了拦截已经处理的请求,还要求每次相同的请求都返回一样的效果。

  • token令牌
  • 分布式锁

7.接口限流

限流策略、以及粒度

  • 流量网关限流
  • 业务网关限流

8.参数校验

9.批量接口,需要限制限制请求记录条数

接口需要做条数判断

10.数据脱敏

  • 请求:部分敏感接口,可以对接口请求数据进行加密
    对用户比较重要的数据,如银行卡号、身份证号、手机号、保险号,等数据,请求前可以用base64进行加密。
  • 返回:数据脱敏
    对返回结果包含敏感数据的接口,数据进行脱敏:银行卡号、身份证号、手机号等。如:
    用户手机号:139****7895
    身份证号:****19****3345353****

11.请求日志 API Log设计

  • 可以在网关层做请求日志的收集,记录:traceId,requestId,request parameter,request body ,response result,error code,error message ..等信息
  • 做成可视化,提供一个UI显示和查询工具,可以给内部和外部使用

12.异步处理

耗时接口可以改为异步处理
常见的方式是可以发送MQ消息,异步化处理。

13.压力测试

可以用JMeter等工具做压力测试

14.完整的接口文档

  • 内部:swagger等开源方案
  • 外部:自建、sphinx(python)、gitbook等

(完)

发表评论

邮箱地址不会被公开。 必填项已用*标注