LeAPI 后端接口开发 - 发布、下线接口

一、上线接口(仅管理员)

  1. 校验请求参数

  2. 判断(测试)接口是否可以调用

  • 引入调用接口的客户端(自己写的 SDK)
  • 注入客户端实例
  • 调用接口
  1. 修改数据库中接口的状态
java 复制代码
    /**
     * 上线(发布)接口
     *
     * @param idRequest
     * @param request
     * @return
     */
    @PostMapping("/online")
    @AuthCheck(mustRole = "admin")
    public BaseResponse<Boolean> onlineInterfaceInfo(@RequestBody IdRequest idRequest,
                                                     HttpServletRequest request) {
        if (idRequest == null || idRequest.getId() <= 0) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        // 1. 校验接口是否存在
        Long id = idRequest.getId();
        InterfaceInfo oldInterfaceInfo = interfaceInfoService.getById(id);
        if (oldInterfaceInfo == null) {
            throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);
        }
        // 2. 校验接口是否可以调用
        com.ghost.leapiclientsdk.model.User user = new com.ghost.leapiclientsdk.model.User();
        user.setUsername("testInterfaceInfo");
        String nameByJSON = leAPIClient.getNameByJSON(user);
        if (StringUtils.isBlank(nameByJSON)) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR, "接口调用失败");
        }
        // 3. 修改数据库中接口的状态
        InterfaceInfo interfaceInfo = new InterfaceInfo();
        interfaceInfo.setId(id);
        interfaceInfo.setStatus(InterfaceInfoStatusEnum.ONLINE.getValue());
        boolean result = interfaceInfoService.updateById(interfaceInfo);
        return ResultUtils.success(result);
    }
  1. 测试上线接口功能
  • 使用 Knife4j 接口文档进行测试
  • 查看数据库中接口状态是否修改成功

二、下线接口(仅管理员)

  1. 校验请求参数

  2. 校验接口是否已经发布上线:只有已经上线的接口才能下线

  3. 修改数据库中接口的状态

java 复制代码
    /**
     * 下线(关闭)接口
     *
     * @param idRequest
     * @param request
     * @return
     */
    @PostMapping("/offline")
    public BaseResponse<Boolean> offlineInterfaceInfo(@RequestBody IdRequest idRequest, HttpServletRequest request) {
        if (idRequest == null || idRequest.getId() <= 0) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        // 1. 校验接口是否存在
        Long id = idRequest.getId();
        InterfaceInfo oldInterfaceInfo = interfaceInfoService.getById(id);
        if (oldInterfaceInfo == null) {
            throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);
        }

        // 2. 只有已经上线的接口才能下线
        if (oldInterfaceInfo.getStatus() != InterfaceInfoStatusEnum.ONLINE.getValue()) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "该接口尚未上线");
        }

        // 3. 修改数据库中接口的状态
        InterfaceInfo interfaceInfo = new InterfaceInfo();
        interfaceInfo.setId(id);
        interfaceInfo.setStatus(InterfaceInfoStatusEnum.OFFLINE.getValue());
        boolean result = interfaceInfoService.updateById(interfaceInfo);
        return ResultUtils.success(result);
    }
  1. 测试上线接口功能
  • 使用 Knife4j 接口文档进行测试
  • 查看数据库中接口状态是否修改成功
相关推荐
小句16 分钟前
MySQL慢查询日志详细使用指南
数据库·mysql·adb
老邓计算机毕设1 小时前
SSM医疗资源普查6qxol(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb开发·医疗资源管理
dyyx1111 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
码农水水1 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php
曹牧1 小时前
Oracle:NULL
数据库·oracle
龙之叶2 小时前
【Android Monkey源码解析五】- 异常处理
android·数据库
马克学长3 小时前
SSM医院门诊管理系统u4pw5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 开发·门诊管理
TDengine (老段)3 小时前
使用安装包快速体验 TDengine TSDB
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
闻哥3 小时前
Redis 避坑指南:从命令到主从的全链路踩坑实录
java·数据库·redis·缓存·面试·springboot
建群新人小猿4 小时前
陀螺匠企业助手—个人简历
android·大数据·开发语言·前端·数据库