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

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

1. 校验请求参数

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

  • 引入调用接口的客户端(自己写的 SDK)
  • 注入客户端实例
  • 调用接口

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

    /**
     * 上线(发布)接口
     *
     * @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);
    }

4. 测试上线接口功能

  • 使用 Knife4j 接口文档进行测试

  • 查看数据库中接口状态是否修改成功

 

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

1. 校验请求参数

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

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

    /**
     * 下线(关闭)接口
     *
     * @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);
    }

4. 测试上线接口功能

  • 使用 Knife4j 接口文档进行测试

  • 查看数据库中接口状态是否修改成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/370211.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

27. 云原生流量治理之kubesphere灰度发布

云原生专栏大纲 文章目录 灰度发布介绍灰度发布策略KubeSphere中恢复发布策略蓝绿部署金丝雀发布流量镜像 灰度发布实战部署自制应用金丝雀发布创建金丝雀发布任务测试金丝雀发布情况 蓝绿部署创建蓝绿部署测试蓝绿部署情况 流量镜像创建流量进行任务测试流量镜像情况 灰度发布…

【Docker】Docker Registry(镜像仓库)

文章目录 一、什么是 Docker Registry二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库五、常用命令镜像仓库命令镜像命令(部分)容器命令(部分) 六、docker镜像仓库实战综合实战一&#xff1a;搭建一个 nginx 服务综合实战二&#xff1a;Docker hub上创建自己私有仓库综…

【SpringBoot】权限系统与RBAC模型

&#x1f4dd;个页人主&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot⛺️稳重求进&#xff0c;晒太阳 权限系统与RBAC模型 权限 为了解决用户和资源的操作关系&#xff0c; 让指定的用户&#xff0c;只能操作指定的资源。 权限功能 菜单权限&a…

OJ_整数奇偶排序

题干 c实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<algorithm> using namespace std;//compare函数不交换返回true bool compare(int a, int b) {//1.a奇数&#xff0c;b偶数&#xff0c;不交换//2.a奇数&#xff0c;b奇数&#xff0c;a比b…

使用java -jar命令运行jar包提示“错误:找不到或无法加载主类“的问题分析

用maven把普通java项目打包成可运行的jar后&#xff0c;打开cmd用java -jar运行此jar包时报错&#xff1a; 用idea运行该项目则没有问题 。 其实原因很简单&#xff0c;我们忽略了2个细节。 java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。我…

【IoC控制反转】看完必定强大!立刻奏效!

1. 前言 假如你学过Spring框架&#xff0c;那么你肯定会听说过 Spring 的IoC(控制反转) 、DI(依赖注入)这两个概念&#xff0c;当然&#xff0c;对于初学者而言&#xff0c;我相信也只是听说过&#xff0c;仅此而已。我在学习关于这个概念的时候&#xff0c;看了很多课&#x…

110.乐理基础-五线谱-五线谱的速度

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;五线谱的附点、休止符、连线、延音线-CSDN博客 上一个内容里练习的答案&#xff1a; 五线谱里的情绪与速度也是跟简谱里一样&#xff0c;详情看&#xff1a;音乐的速度 专栏里的内容&#xff0c;根据创建时间&…

文件内容读写-数据流

前言&#xff1a; 在Java中操作文件主要分为&#xff1a;1.文件系统的操作&#xff08;File类&#xff09;、2.文件内容的操作&#xff08;流对象&#xff09;。 在上一节内容中针对File类进行了介绍&#xff0c;本节主要介绍Java中对File类对象内容的读与写操作&#xff08;数…

AcWing算法学习笔记:搜索与图论1(DFS + BFS + 树与图的深度优先遍历 + 树与图的广度优先遍历 + 拓扑排序)

搜索与图论 一、DFS① 排列数字② n-皇后问题&#xff08;还没写&#xff09; 二、BFS① 走迷宫② 八数码&#xff08;还没写&#xff09; 三、树与图的深度优先遍历&#xff08;树的重心&#xff09;四、树与图的广度优先遍历&#xff08;图中点的层次&#xff09;五、有向图的…

VUE3+TS使用OpenSeadragon学习之旅,实现多图片切换效果

1.官方网站&#xff1a;OpenSeadragon 2.使用npm下载插件&#xff1a;npm install openseadragon 3.在 index.html文件引入资源 <link rel"stylesheet" href"node_modules/openseadragon/build/openseadragon/openseadragon.css" /><script src…

基于YOLOv8的足球赛环境下足球目标检测系统(Python源码+Pyqt6界面+数据集)

博主简介 AI小怪兽&#xff0c;YOLO骨灰级玩家&#xff0c;1&#xff09;YOLOv5、v7、v8优化创新&#xff0c;轻松涨点和模型轻量化&#xff1b;2&#xff09;目标检测、语义分割、OCR、分类等技术孵化&#xff0c;赋能智能制造&#xff0c;工业项目落地经验丰富&#xff1b; …

【Nginx】Nginx

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 公司产品出现瓶颈Nginx作用Nginx安装window下安装linux下安装 Nginx常用命令 公司产品出现瓶颈 …

企业FTP传输慢?最新FTP加速和FTP替代方案!

在当今这个信息泛滥的时代&#xff0c;企业对于数据传输的速率和效率有着空前的需求。文件传输作为日常工作中的关键环节&#xff0c;其效率直接关系到项目的进展和企业的市场竞争力。 传统的FTP&#xff08;文件传输协议&#xff09;在处理大规模数据传输时&#xff0c;常常显…

Java SPI 代码示例

Java Service Provider Interface 是JDK自带的服务提供者接口又叫服务发现机制更是一种面向接口的设计思想。即JDK本身提供接口类&#xff0c; 第三方实现其接口&#xff0c;并作为jar包或其他方式注入到其中&#xff0c; 在运行时会被JDK ServiceLoader 发现并加载&#xff0c…

深度神经网络如何启用卤化物后端以提高效率

介绍 本教程指导如何使用 Halide 语言后端在 OpenCV 深度学习模块中运行模型。Halide 是一个开源项目&#xff0c;它让我们以可读性强的格式编写图像处理算法&#xff0c;根据特定设备安排计算并以相当高的效率对其进行评估。 卤化物项目的官方网站&#xff1a;Halide。 最新…

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…

修改UnityEngine dll

修改UnityEngine dll 由于有些版本的dll与热重载并不兼容&#xff0c;需要小幅修改代码。 使用dnspy工具 我们使用 dnspy 来修改 dll文件。而dnspy只能在Win下运行&#xff0c;故哪怕是mac版本dll&#xff0c; 你也得先将相应dll复制到Win下后再修改。下载 dnspy&#xff0c…

C#之linq和lamda表达式GroupBy分组拼接字符串

文章目录 C#之linq和lamda表达式GroupBy分组拼接字符串业务需求核心代码调试 C#之linq和lamda表达式GroupBy分组拼接字符串 业务需求 点击提示信息&#xff0c;如&#xff1a;“售后单【SH001】序列号【001&#xff0c;002&#xff0c;006】&#xff1b;售后单【SH002】序列号…

【Spring】代理模式

文章目录 代理模式对代理模式的理解静态代理动态代理JDK动态代理原理源码优化 CGLIB动态代理使用原理 JDK与CGLIB的对比 面试题JDK动态代理和CGLIB有什么区别&#xff1f;既然有没有接口都可以用CGLIB&#xff0c;为什么Spring还要使用JDK动态代理&#xff1f; 代理模式 对代理…

3 编辑器(Vim)

1.完成 vimtutor。备注&#xff1a;它在一个 80x24&#xff08;80 列&#xff0c;24 行&#xff09; 终端窗口看起来效果最好。 2.下载我们提供的 vimrc&#xff0c;然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 &#xff08;用 Vim!&#xff09;&#xff0c; 然后观察 …