[注] :仅个人自用备份
-
检查接口入参和返回值是否和接口文档一致,包括名称和是否必传选项
-
检查保存接口是否有重复性校验,入参是否有添加校验,是否在对象上添加 @Valid 注解
public ResponseEntity<?> update(@Valid @RequestBody EmergencyContactDTO req ) { // 校验需要添加注解 return ResponseEntity.ok(emergencyContactService.updateEmergencyContact(id, req)); }
-
检查更新接口是否有不存在校验, 是否所有字段都允许更新, 是否需要校验名称等字段修改后重复的问题,查询时,需要排除自己的id
public PhoneAppCategory updateCategory(PhoneAppCategory category) { PhoneAppCategory phoneAppCategory = getById(category.getId()); // 判断是否存在 if (phoneAppCategory == null) { throw new GeneralException(ErrorCode.ERROR_PHONE_APP_CATEGORY_NOT_FOUND); } Optional<PhoneAppCategory> phoneAppCategoryOpt = lambdaQuery() // 判断名称是否修改后存在,并排除自己 .ne(PhoneAppCategory::getId, category.getId()) .eq(PhoneAppCategory::getName, category.getName()) .oneOpt(); if (phoneAppCategoryOpt.isPresent()) { throw new GeneralException(ErrorCode.ERROR_PHONE_APP_CATEGORY_EXISTED); } updateById(category); return category; }
-
检查删除接口是否可以直接删除,如果有关联调用,是否需要提示先解除绑定
@Override @Transactional(rollbackFor = Exception.class) public void deleteCategory(String id) { String userId = accountService.getCurrentUser().getId(); removeById(id); phoneAppService.removeByCategoryId(id, userId); // 关联删除, 是否需要提示先解除绑定 }
-
检查是否涉及多个Service 相关调用且为更新删除的接口是否添加 @Transaction 注解, 参看上一个示例
-
检查查询接口是否 名称查询使用 like 进行模糊查询,是否有排序规则,列表可以按照时间倒序排序
-
返回值VM对象,需要额外填充字段,需要判断查询对象是否存在,避免空指针, 如果查询对象不存在,看业务需求是否需要报错
-
如果涉及第三方接口调用,例如 LocalDataTime GeoPoint 类型是否能够接收和转换
-
检查是否所有接口完成自我测试
-
发布新版本后,检查是否有数据库字段升级,是否需要在测试环境手动添加, 需要删除字段或者表,提前备份
-
代码是否可以优化,是否可以使用设计模式,是否有扩展性,是否性能有影响
-
代码
for
循环中,如果遍历通过 id 去查询数据,可以考虑先拿到所有的id集合,使用 sql 的in
语句来进行 -
业务代码数据如果有重复数据,或者有顺序数据,需要谨慎考虑使用 Map
-
复杂逻辑或者有可能得到空数据时,需要在开头进行判空返回