功能设计
发布接口
首先需要验证接口是否存在,然后判断接口是否可调用,否则访问接口都是 404,影响用户体验。
接着,如果接口可以调用,我们需要修改数据库中该接口的状态为 1,表示接口已经被发布,状态默认为 0(关闭)。
下线接口
当状态为 0 时,表示该接口还没有进行任何处理
我们这里就直接使用 0 和 1 来表示状态,不再添加额外的状态字段,大家可以按照自己的需求进行设计。对于下线接口,校验接口是否存在也是和发布接口类似的,但是下线接口无需判断接口是否可调用。
总结
后台接口:
发布接口(仅管理员可操作)
- 校验该接口是否存在
- 判断该接口是否可以调用
- 修改接口数据库中的状态字段为 1(已发布)
下线接口(仅管理员可操作)
- 校验该接口是否存在
- 修改接口数据库中的状态字段为 0
这两个接口接收什么参数呢?接口的 id 即可
发布接口
InterfaceInfoController.java
/**
* 发布
*
* @param idRequest
* @return
*/
// 声明该方法为一个HTTP POST请求处理方法,处理路径是"/online",用于发布接口
@PostMapping("/online")
@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)// 该接口仅管理员可用
public BaseResponse<Boolean> onlineInterfaceInfo(@RequestBody IdRequest idRequest) {
// 如果id为null或者id小于等于0
if (idRequest == null || idRequest.getId() <= 0) {
// 抛出业务异常,表示请求参数错误
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
// 1.校验该接口是否存在
// 获取idRequest对象的id属性值
long id = idRequest.getId();
// 根据id查询接口信息数据
InterfaceInfo oldInterfaceInfo = interfaceInfoService.getById(id);
// 如果查询结果为空
if (oldInterfaceInfo == null) {
// 抛出业务异常,表示未找到数据
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);
}
// 2.判断该接口是否可以调用
// 创建一个User对象(这里先模拟一下,搞个假数据)
com.sujie.suapiclientsdk.model.User user = new com.sujie.suapiclientsdk.model.User();
// 设置user对象的username属性为"test"
user.setUsername("test");
// 通过yuApiClient的getUsernameByPost方法传入user对象,并将返回的username赋值给username变量
String username = suApiClient.getUserNameByPost(user);
// 如果username为空或空白字符串
if (StringUtils.isBlank(username)) {
// 抛出系统错误的业务异常,表示系统内部异常,并附带错误信息"接口验证失败"
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "接口验证失败");
}
// 创建一个InterfaceInfo对象
InterfaceInfo interfaceInfo = new InterfaceInfo();
// 设置interfaceInfo的id属性为id
interfaceInfo.setId(id);
// 3.修改接口数据库中的状态字段为上线 1
interfaceInfo.setStatus(InterfaceInfoStatusEnum.ONLINE.getValue());
// 调用interfaceInfoService的updateById方法,传入interfaceInfo对象,并将返回的结果赋值给result变量
boolean result = interfaceInfoService.updateById(interfaceInfo);
// 返回一个成功的响应,响应体中携带result值
return ResultUtils.success(result);
}
@AuthCheck注解 实现方法在aop文件夹
原理:
首先获取当前登录用户的信息,然后判断用户是否具有管理员权限。
如果没有权限,就会直接抛出权限异常;
如果有权限,就会继续执行后续操作。
这种方式被称为 AOP 切面的基本应用之一,这个功能一定要掌握好,能够帮助你更好地理解和应用 AOP 的概念。
下线接口
同样的逻辑判断 id 是否存在、判断这个接口是否存在,判断接口是否可以调用就不需要了,把上线的状态改为下线的状态。