文章目录
- 1.接口参数校验
- 2.注意接口的兼容性
- 3.充分考虑接口的可扩展性
- 4.接口考虑是否需要防重处理
- 5.重点接口考虑线程池隔离
- 6.调用第三方接口要考虑异常和超时处理
- 7.接口实现考虑熔断和降级
- 8.接口的功能定义要具备单一性
- 9.日志打印好
1.接口参数校验
入参是否允许为空,入参长度是否符合你的预期长度。
比如你的数据库表字段设置为varchar(16),对方传了一个32位的字符串过来,如果你不校验参数,插入数据库直接异常了。
出参也是,比如你定义的接口报文,参数是不为空的,但是你的接口返回参数,没有做校验,因为程序某些原因,直返回别人一个null值。
2.注意接口的兼容性
3.充分考虑接口的可扩展性
复用接口

4.接口考虑是否需要防重处理
如果是查询类的请求,其实不用防重。如果是更新修改类的话,尤其金融转账类的,就要过滤重复请求了。
简单点,你可以使用Redis防重复请求,同样的请求方,一定时间间隔内的相同请求,考虑是否过滤。当然,转账类接口,并发不高的话,推荐使用数据库防重表,以唯一流水号作为主键或者唯一索引。

5.重点接口考虑线程池隔离
登陆、转账交易、下单等重要接口, 考虑线程池隔离。如果所有业务一个线程池的话, 如果线程池打满的话, 就问题了。

6.调用第三方接口要考虑异常和超时处理
如果你调用第三方接口,或者分布式远程服务的的话:
- 异常处理
比如,你调别人的接口,如果异常了,怎么处理,是重试还是当做失败还是告警处理。 - 接口超时
没法预估对方接口一般多久返回,一般设置个超时断开时间,以保护你的接口。 - 重试次数
7.接口实现考虑熔断和降级
当前互联网系统一般都是分布式部署的。而分布式系统中经常会出现某个基础服务不可用,最终导致整个系统不可用的情况, 这种现象被称为服务雪崩效应。

如果服务C出现问题,比如是因为慢SQL导致调用缓慢,那将导致B也会延迟,从而A也会延迟。堵住的A请求会消耗占用系统的线程、IO等资源。当请求A的服务越来越多,占用计算机的资源也越来越多,最终会导致系统瓶颈出现,造成其他的请求同样不可用,最后导致业务系统崩溃。
为了应对服务雪崩, 常见的做法是熔断和降级。最简单是加开关控制,当下游系统出问题时,开关降级,不再调用下游系统。还可以选用开源组件Hystrix, Sentinal, Redis, Guava。
8.接口的功能定义要具备单一性
单一性是指接口做的事情比较单一、专一。比如一个登陆接口,它做的事情就只是校验账户名密码,然后返回登陆成功以及userId即可。但是如果你为了减少接口交互,把一些注册、一些配置查询等全放到登陆接口,就不太妥。
口的功能单一、明确。比如订单服务、积分、商品信息相关的接口都是划分开的。
9.日志打印好
日志保驾护航:
















