如何写好一个接口

接口设计

  • 接口要注意拓展性,设计得灵活一些,应对业务的变化。
  • 字段尽量不要耦合在一起。
  • 接口尽量通用。能调用一次完成的,不用调用两次。网络IO是很慢的。
  • 接口的字段,尽量少一些,字段越多,越混乱,越难联调。
  • 能批量处理,尽量批量处理。
  • 如果不存在依赖关系,能异步处理,尽量异步处理。
  • 状态变量,尽量不要连续,比如1234,可以用10,20,30,方便在中间新增状态变量。
  • 常用的接口功能,一般有查询(列表),新增,修改,删除,详情,导入,导出。
    查询列表页接口,不要跟详情页接口用同一个。

代码规范

  • 下载代码规范插件,Alibaba Java Coding Guidelines 。遵循《阿里巴巴java开发手册》。
  • 下载代码检查插件,SonarLint。

日志

  • 关键的入参,最好打印日志,否则出了问题,很难定位。

  • 关键的方法,在结束前,可以打印日志。方便定位问题。

  • 异常日志,最好打印出异常的方法栈,以及对应的参数,能够还原现场,定位问题。

  • 日志的级别要明确。关键的日志用 info级别,调试的日志用 debug 级别,错误日志用 error 级别。
    特殊的if else分支可以用warn(比如判断用户id为空之类)。

分层

  • 根据不同的项目,使用 Controller-Service-Dao, 或者 Controller–Service–Manager–Dao。

Manager层是通用的数据库CRUD(增删改查),而Service层则是由多种CRUD构成的业务逻辑。

对象参数

  • 入参用 DTO,出参用 VO,数据库对应的用 Entity或者DO。

  • 参数如果有很多个,最好封装成对象。

  • VO对象,哪怕是没有值的属性,最好也设置一个值,否则前端获取到对象后还得判断是否存在对应的属性。

参数校验

  • 参数是否必需,缺少参数要提示。
  • 字符串参数,是否可以为 null,是否可以为空字符串
  • Integer参数,能否为 null,能否为空

异常处理

  • 异常处理,返回用户能理解的异常提示。

  • 如果有统一异常处理最好,如果没有,在控制层要处理好异常。

面向对象

面向对象编程和面向对象设计的五个基本原则。

  • Single Responsibility Principle(单一职责原则)

  • Open Closed Principle(开闭原则)

  • Liskov Substitution Principle(里氏替换原则)

  • Interface Segregation Principle(接口隔离原则)

  • Dependency Inversion Principle(依赖倒置原则)

详情见: https://blog.csdn.net/Taobaojishu/article/details/114313082

单元测试

  • 最好写下单元测试,尽量提高覆盖率,减少线上问题。

在做重构的时候,有单元测试可以测试,不用担心重构出错。
线上出现问题,可以通过单元测试用例,快速测试。

对接第三方系统

  • 对接第三方系统,往往会比较耗时。在初次查询第三方系统后,可以考虑能否做缓存处理、或者本地数据表存储。
  • 对接第三方系统,关键的地方,最好记录日志。

接口性能优化

详情见:https://blog.csdn.net/sinat_32502451/article/details/133053399

你可能感兴趣的:(java)