做为一个 Web 应用开发人员,平时工做中最多的工做场景就是开发接口给前端调用或者关联系统调用。接口写了这么多,不知道你们有没有总结过在开发一个接口时须要注意哪些细节。下面列出我本身的一些总结,每次写接口时都用这些注意点“扫描”下本身的接口,你的接口质量将会上升一个台阶。前端
这个点应该不用多说了,咱们的接口就是为了完成业务功能的,这个是必需要的。程序员
但若是你的接口仅仅考虑了正常的流程,一旦发生任何异常就运行不起来了,那么你的接口不是一个合格的接口。数据库
若是全部用户请求都符合接口预期、全部网络调用都不会超时、全部系统都不会down机,全部系统都能承载大并发的流量,那么程序员的工做量将减轻一大半。“程序员大部分时间都在解决异常”,这句话我想你必定听过。缓存
其实下面才是本文的重点,怎么让本身的接口有更高的健壮性、更高的性能以及更高的扩展性,这是咱们开发接口中不容忽视的地方。性能优化
在你这个接口涉及的每一个环节,你都要考虑到会不会发生异常。若是异常发生了,你要怎么处理?你的数据要不要回滚?Service是否是已经开启了事物?事务的隔离级别是否正确?你的代码有没有全局异常处理机制?网络
不少系统异常都是由于用户传的参数不对致使格式化错误、空指针错误等。因此咱们要将错误扼杀在源头,对用户传过来的参数作严格的检查,在controller层作参数校验。这个能够结合Spring的Validate机制。并发
这边打日志的原则是不打多余的日志,打印的日志能让本身看清系统的运行状态,出问题是能迅速定位问题。异步
你的接口哪些角色的用户能够访问,用户不登录是否能够访问。分布式
若是你的接口是一个查询接口,你就不该该查出当前用户没有权限访问的数据。性能
提高接口性能的方法有不少,这边只是举了几个通用的列子。结合你具体的业务场景,有时调整下业务的执行流程也能大大提高用户体验。好比银行开户的流程能够分为授信和签约两步,其中授信是比较耗时的操做,那咱们能够考虑在用户提交身份证材料时触发授信操做,用户提交完材料,授信操做可能已经完成了。
考虑下你的接口是否要保持幂等
不少开发人员都不会想测试场景来测试本身的接口。我本身以为咱们想的测试场景要够全,甚至要比测试还多。个人建议是在开发环境必定要本身自测一下,本身想各类测试场景,造各类数据进行测试,同时将本身造的数据保存下来,方便后续用到。