个人后端接口开发检查单

[注] :仅个人自用备份

  1. 检查接口入参和返回值是否和接口文档一致,包括名称和是否必传选项

  2. 检查保存接口是否有重复性校验,入参是否有添加校验,是否在对象上添加 @Valid 注解

    public ResponseEntity<?> update(@Valid  @RequestBody EmergencyContactDTO req  ) {
          
              // 校验需要添加注解
        return ResponseEntity.ok(emergencyContactService.updateEmergencyContact(id, req));
    }
    
  3. 检查更新接口是否有不存在校验, 是否所有字段都允许更新, 是否需要校验名称等字段修改后重复的问题,查询时,需要排除自己的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;
        }
    
  4. 检查删除接口是否可以直接删除,如果有关联调用,是否需要提示先解除绑定

        @Override
        @Transactional(rollbackFor = Exception.class)
        public void deleteCategory(String id) {
          
          
            String userId = accountService.getCurrentUser().getId();
            removeById(id);
            phoneAppService.removeByCategoryId(id, userId);     // 关联删除, 是否需要提示先解除绑定
        }
    
  5. 检查是否涉及多个Service 相关调用且为更新删除的接口是否添加 @Transaction 注解, 参看上一个示例

  6. 检查查询接口是否 名称查询使用 like 进行模糊查询,是否有排序规则,列表可以按照时间倒序排序

  7. 返回值VM对象,需要额外填充字段,需要判断查询对象是否存在,避免空指针, 如果查询对象不存在,看业务需求是否需要报错

  8. 如果涉及第三方接口调用,例如 LocalDataTime GeoPoint 类型是否能够接收和转换

  9. 检查是否所有接口完成自我测试

  10. 发布新版本后,检查是否有数据库字段升级,是否需要在测试环境手动添加, 需要删除字段或者表,提前备份

    扫描二维码关注公众号,回复: 14670702 查看本文章
  11. 代码是否可以优化,是否可以使用设计模式,是否有扩展性,是否性能有影响

  12. 代码 for 循环中,如果遍历通过 id 去查询数据,可以考虑先拿到所有的id集合,使用 sql 的 in 语句来进行

  13. 业务代码数据如果有重复数据,或者有顺序数据,需要谨慎考虑使用 Map

  14. 复杂逻辑或者有可能得到空数据时,需要在开头进行判空返回

猜你喜欢

转载自blog.csdn.net/assember/article/details/123277895