ruoyi-pro 代码生成api,swagger扫描不到

news2025/8/6 22:22:57

背景

重新创建一个新的maven工程,按照芋道源码ruoyi-pro官方文档生成代码后,新的maven工程目录下的接口不能被swagger扫描到,swagger-ui不显示新增的maven工程模块下的api。

解决方法

  • 新增maven工程类中,新增swagger扫描配置类
import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * office 模块的 web 组件的 Configuration
 *
 * @author 芋道源码
 */
@Configuration(proxyBeanMethods = false)
public class OfficeWebConfiguration {

    /**
     * office模块的 API 分组
     */
    @Bean(name = "officeGroupedOpenApi")
    public GroupedOpenApi officeGroupedOpenApi() {
        return YudaoSwaggerAutoConfiguration.buildGroupedOpenApi("office");
    }

}

简答:查看框架源码可以看到此bean调用的swagger配置方法将以office分组开头,扫描拼接后的office前缀的api,如下代码

  // ========== 分组 OpenAPI 配置 ==========

    /**
     * 所有模块的 API 分组
     */
    @Bean
    public GroupedOpenApi allGroupedOpenApi() {
        return buildGroupedOpenApi("all", "");
    }

    public static GroupedOpenApi buildGroupedOpenApi(String group) {
        return buildGroupedOpenApi(group, group);
    }

    public static GroupedOpenApi buildGroupedOpenApi(String group, String path) {
        return GroupedOpenApi.builder()
                .group(group)
                .pathsToMatch("/admin-api/" + path + "/**", "/app-api/" + path + "/**")
                .addOperationCustomizer((operation, handlerMethod) -> operation
                        .addParametersItem(buildTenantHeaderParameter())
                        .addParametersItem(buildSecurityHeaderParameter()))
                .build();
    }
  • 将新增的maven工程包放到启动类所在的工程中(yudao-server),供启动类加载新增的maven工程,并将新增的maven工程加载到spring容器中。

这时候就会发现我们新增的配置类中的图标就会发生改变,可以看到我们写的配置类已经注入到了spring容器中了。,这个时候在访问接口文档就会发现office模块已经可以看到了。
在这里插入图片描述

controller接口中的/api-admin/**,是在哪里拼接的?

找到我们的YudaoWebAutoConfiguration.java,如下代码中可以看到我们的接口中的前缀在这里加入的。
可以发现方法中先判断扫描的类中有你没有加入@RestController注解,然后在拼接接口前缀。

/**
     * 设置 API 前缀,仅仅匹配 controller 包下的
     *
     * @param configurer 配置
     * @param api        API 配置
     */
    private void configurePathMatch(PathMatchConfigurer configurer, WebProperties.Api api) {
        AntPathMatcher antPathMatcher = new AntPathMatcher(".");
        configurer.addPathPrefix(api.getPrefix(), clazz -> clazz.isAnnotationPresent(RestController.class)
                && antPathMatcher.match(api.getController(), clazz.getPackage().getName())); // 仅仅匹配 controller 包
    }

打开WebProperties.Api类中,可以看到拼接的前缀信息。如下

@Data
public class WebProperties {

    @NotNull(message = "APP API 不能为空")
    private Api appApi = new Api("/app-api", "**.controller.app.**");
    @NotNull(message = "Admin API 不能为空")
    private Api adminApi = new Api("/admin-api", "**.controller.admin.**");

    @NotNull(message = "Admin UI 不能为空")
    private Ui adminUi;

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Valid
    public static class Api {

        /**
         * API 前缀,实现所有 Controller 提供的 RESTFul API 的统一前缀
         *
         *
         * 意义:通过该前缀,避免 Swagger、Actuator 意外通过 Nginx 暴露出来给外部,带来安全性问题
         *      这样,Nginx 只需要配置转发到 /api/* 的所有接口即可。
         *
         * @see YudaoWebAutoConfiguration#configurePathMatch(PathMatchConfigurer)
         */
        @NotEmpty(message = "API 前缀不能为空")
        private String prefix;

        /**
         * Controller 所在包的 Ant 路径规则
         *
         * 主要目的是,给该 Controller 设置指定的 {@link #prefix}
         */
        @NotEmpty(message = "Controller 所在包不能为空")
        private String controller;

    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb--用户登录注册案例

用户登录注册案例4.1 需求分析4.2 用户登录功能4.3 记住我-设置Cookie4.4 记住我-获取Cookie4.5 用户注册功能4.6 验证码-展示4.7验证码-校验4.8 测试目标 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用完善用户登录注册案例的功能 4.1 需求分析 需求说明&#xf…

循环队列的实现

我们知道队列的实现可以用单链表和数组,但是循环链表也可以使用这两种方式。首先我们来看看单链表:首先使用单链表,我们需要考虑循环队列的一些特点。单链表实现循环队列我们要考虑几个核心问题:首先我们要区别 解决 空 和 满 的问…

一文吃透 SpringMVC 中的转发和重定向

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

CameraLink备忘录

首先来看看MDR26的引脚定义 从正面看进去,插头端,放置成倒梯形。 上排,从左到右,1到13, 下排,从左到右,14到26. 插座端,是镜像对称关系。 从正面看进去,插座端&#xf…

C#开发的OpenRA的游戏主界面怎么样创建4

继续游戏主界面创建的主题, 前面已经说到怎么样找到mainmenu.yaml来显示主界面,也说了怎么样找到各个子控件类。 现在就来仔细分析一下,主界面每一部分的功能。 比如下面这个区域的界面是怎么样创建: 要创建这一小部分的界面显示,也是需要做很多的工作。 因为在这里所有UI…

乐鑫特权隔离机制 #4 | 用户应用程序的安全启动

乐鑫特权隔离机制 系列文章 #4 目录 安全启动 (Secure boot) 受保护应用程序的安全启动 (Secure boot for protected app ) 用户应用程序的安全启动 (Secure boot for user app) 基于证书的验证方案 (Certificate-based verification scheme) 必要条件验证过程​​​​​…

数据模型(上):模型分类和模型组成

1.模型分类 ​ 数据模型是一种由符号、文本组成的集合,用以准确表达信息景观,达到有效交流、沟通的目的。数据建模者要求能与来自不同部门,具有不同技术背景,不同业务经验,不同技术水平的人员交流、沟通。数据建模者要了解每个人员的观点,并通过反馈证明理解无误,最终作…

【Java】Java环开发环境安装

Java环开发环境安装 简介: 如果要从事Java编程,则需要安装JDK,如果仅仅是运行一款Java程序则JRE就满足要求。 Java的安装包分为两类 一类是JRE其就是一个独立的Java运行环境; 一类是JDK其是Java的开发环境,不过在JDK…

软件设计师教程(九)计算机系统知识-软件工程基础知识

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…

HTTP概念协议报文结构请求响应数据报分析

文章目录前言一、HTTP的概念、特点、工作过程、应用场景二、HTTP协议报文格式查看方式三、HTTP协议数据报格式解读http请求数据报Part1:首行关于URL关于http方法Get请求Post方法【经典面试题】GET和POST区别其他方法关于HTTP协议版本号Part2:请求头(header&#xff…

【数据库】MySQL表的增删改查(基础命令详解)

写在前面 : 语法中大写字母是关键字,用[]括这的是可以省略的内容。文中截图是相对应命令执行完得到的结果截图。1.CRUD 注释:在SQL中可以使用“--空格描述”来表示注释说明.CRUD:即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首…

MOS FET继电器(无机械触点继电器)设计输入侧电源时的电流值概念

设计输入侧电源时的问题 机械式继电器、MOS FET继电器分别具有不同的特长。基于对MOS FET继电器所具小型及长寿命、静音动作等优势的需求,目前已经出现了所用机械式继电器向MOS FET继电器转化的趋势。 但是,由于机械式继电器与MOS FET继电器在产品结构…

CHAPTER 3 磁盘管理

磁盘管理1 磁盘管理1.1 块设备信息(lsblk)1.2 挂载硬盘1.2.1 挂载单个硬盘(mkfs、mount)1.2.2 磁盘分区工具(fdisk)1.2.3 创建分区1.2.4 相关命令1. df2. partprobe3. mkfs1.3 逻辑卷管理器(LVM)1. 涉及概念2. 使用LVM流程1.4 磁盘检测及修复(fsck)1 磁盘…

Vue 计算属性基础知识 监听属性watch

计算属性的概念 在{{}}模板中放入太多的逻辑会让模板内容过重且难以维护。例如以下代码&#xff1a; <div id"app">{{msg.split().reverse().join()}}</div><script>const vm new Vue({el: "#app",data: {msg:我想把vue学的细一点}})&…

SAP ABAP 采购订单屏幕增强

为采购订单增加一个页标签&#xff0c;在其中放入客户自定义字段&#xff0c; 1. CMOD 增强接口&#xff1a; MM06E005 EXIT_SAPMM06E_006 为子屏幕参数传入出口&#xff08;抬头&#xff09; EXIT_SAPMM06E_008 为子屏幕参数传出出口&#xff08;抬头&#xff09; EXIT_SA…

Vue基础19之插槽

Vue基础19插槽不使用插槽App.vueCategory.vue默认插槽&#xff1a;slotApp.vueCategory.vue具名插槽App.vueCategory.vue作用域插槽App.vueCategory.vue总结插槽 不使用插槽 App.vue <template><div class"bg"><Category :listData"food"…

vue-element-admin:基于element-ui 的一套后台管理系统集成方案

文章目录一、vue-element-admin1、vue-element-admin1.1简介1.2安装2、vue-admin-template2.1简介2.2安装一、vue-element-admin 1、vue-element-admin 1.1简介 vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 GitHub地址&#xff1a;https://github.com…

redis集群模式登陆

总结redis单机模式时&#xff0c;登陆redis的命令格式&#xff1a; ./redis-cli -h 地址 -p 端口redis集群模式时&#xff0c;登陆redis的命令格式&#xff1a; ./redis-cli -h 地址 -p 端口 -c举例1&#xff1a;redis单机模式下登陆rootubuntu:/usr/local/redis/redis-7.0.0/b…

使用IPEmotion进行声学采集与分析

一 IPEmotion简介 IPEmotion作为IPETRONIK的软件产品&#xff0c;主要应用于车辆测试以及配合不同的车载和实验室测试系统&#xff0c;并满足其测量需求。通过专业化的数据采集软件IPEmotion&#xff0c;我们可以完成数据采集过程&#xff0c;包括&#xff1a;配置数据源/仪器…

信创系统借力小程序应用生态的可能性

随着国内市场需求的不断增长&#xff0c;国产操作系统的应用也开始逐步发展壮大。国产操作系统在与其他操作系统的竞争中&#xff0c;越来越受到用户的青睐。国产操作系统作为一个全新的市场&#xff0c;给应用开发带来了新的机遇和挑战。本文将从国产操作系统应用的现状分析、…