API项目:发布下线

功能设计

发布接口

首先需要验证接口是否存在,然后判断接口是否可调用,否则访问接口都是 404,影响用户体验。

接着,如果接口可以调用,我们需要修改数据库中该接口的状态为 1,表示接口已经被发布,状态默认为 0(关闭)。

下线接口

当状态为 0 时,表示该接口还没有进行任何处理

我们这里就直接使用 0 和 1 来表示状态,不再添加额外的状态字段,大家可以按照自己的需求进行设计。对于下线接口,校验接口是否存在也是和发布接口类似的,但是下线接口无需判断接口是否可调用。

总结

后台接口:

发布接口(仅管理员可操作)

  1. 校验该接口是否存在
  2. 判断该接口是否可以调用
  3. 修改接口数据库中的状态字段为 1(已发布)

下线接口(仅管理员可操作)

  1. 校验该接口是否存在
  2. 修改接口数据库中的状态字段为 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 是否存在、判断这个接口是否存在,判断接口是否可以调用就不需要了,把上线的状态改为下线的状态。

前端

增加发布和下线按钮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值