Commit d9e729e1a832c6a6f20589979b0e0b21ad2c0533
1 parent
f441de53
fix:【framework 框架】
app-api 前缀不生效,都是使用 admin-api
Showing
1 changed file
with
23 additions
and
0 deletions
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java
| ... | ... | @@ -11,6 +11,7 @@ import io.swagger.v3.oas.models.parameters.Parameter; |
| 11 | 11 | import io.swagger.v3.oas.models.security.SecurityRequirement; |
| 12 | 12 | import io.swagger.v3.oas.models.security.SecurityScheme; |
| 13 | 13 | import org.springdoc.core.customizers.OpenApiBuilderCustomizer; |
| 14 | +import org.springdoc.core.customizers.OperationCustomizer; | |
| 14 | 15 | import org.springdoc.core.customizers.ServerBaseUrlCustomizer; |
| 15 | 16 | import org.springdoc.core.models.GroupedOpenApi; |
| 16 | 17 | import org.springdoc.core.properties.SpringDocConfigProperties; |
| ... | ... | @@ -127,6 +128,7 @@ public class YudaoSwaggerAutoConfiguration { |
| 127 | 128 | .addOperationCustomizer((operation, handlerMethod) -> operation |
| 128 | 129 | .addParametersItem(buildTenantHeaderParameter()) |
| 129 | 130 | .addParametersItem(buildSecurityHeaderParameter())) |
| 131 | + .addOperationCustomizer(buildOperationIdCustomizer()) | |
| 130 | 132 | .build(); |
| 131 | 133 | } |
| 132 | 134 | |
| ... | ... | @@ -158,5 +160,26 @@ public class YudaoSwaggerAutoConfiguration { |
| 158 | 160 | .schema(new StringSchema()._default("Bearer test1").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1 |
| 159 | 161 | } |
| 160 | 162 | |
| 163 | + /** | |
| 164 | + * 核心:自定义OperationId生成规则,组合「类名前缀 + 方法名」 | |
| 165 | + * | |
| 166 | + * @see <a href="https://github.com/YunaiV/ruoyi-vue-pro/issues/957">app-api 前缀不生效,都是使用 admin-api</a> | |
| 167 | + */ | |
| 168 | + private static OperationCustomizer buildOperationIdCustomizer() { | |
| 169 | + return (operation, handlerMethod) -> { | |
| 170 | + // 1. 获取控制器类名(如 UserController) | |
| 171 | + String className = handlerMethod.getBeanType().getSimpleName(); | |
| 172 | + // 2. 提取类名前缀(去除 Controller 后缀,如 UserController -> User) | |
| 173 | + String classPrefix = className.replaceAll("Controller$", ""); | |
| 174 | + // 3. 获取方法名(如 list) | |
| 175 | + String methodName = handlerMethod.getMethod().getName(); | |
| 176 | + // 4. 组合生成 operationId(如 User_list) | |
| 177 | + String operationId = classPrefix + "_" + methodName; | |
| 178 | + // 5. 设置自定义 operationId | |
| 179 | + operation.setOperationId(operationId); | |
| 180 | + return operation; | |
| 181 | + }; | |
| 182 | + } | |
| 183 | + | |
| 161 | 184 | } |
| 162 | 185 | ... | ... |