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,6 +11,7 @@ import io.swagger.v3.oas.models.parameters.Parameter; | ||
| 11 | import io.swagger.v3.oas.models.security.SecurityRequirement; | 11 | import io.swagger.v3.oas.models.security.SecurityRequirement; |
| 12 | import io.swagger.v3.oas.models.security.SecurityScheme; | 12 | import io.swagger.v3.oas.models.security.SecurityScheme; |
| 13 | import org.springdoc.core.customizers.OpenApiBuilderCustomizer; | 13 | import org.springdoc.core.customizers.OpenApiBuilderCustomizer; |
| 14 | +import org.springdoc.core.customizers.OperationCustomizer; | ||
| 14 | import org.springdoc.core.customizers.ServerBaseUrlCustomizer; | 15 | import org.springdoc.core.customizers.ServerBaseUrlCustomizer; |
| 15 | import org.springdoc.core.models.GroupedOpenApi; | 16 | import org.springdoc.core.models.GroupedOpenApi; |
| 16 | import org.springdoc.core.properties.SpringDocConfigProperties; | 17 | import org.springdoc.core.properties.SpringDocConfigProperties; |
| @@ -127,6 +128,7 @@ public class YudaoSwaggerAutoConfiguration { | @@ -127,6 +128,7 @@ public class YudaoSwaggerAutoConfiguration { | ||
| 127 | .addOperationCustomizer((operation, handlerMethod) -> operation | 128 | .addOperationCustomizer((operation, handlerMethod) -> operation |
| 128 | .addParametersItem(buildTenantHeaderParameter()) | 129 | .addParametersItem(buildTenantHeaderParameter()) |
| 129 | .addParametersItem(buildSecurityHeaderParameter())) | 130 | .addParametersItem(buildSecurityHeaderParameter())) |
| 131 | + .addOperationCustomizer(buildOperationIdCustomizer()) | ||
| 130 | .build(); | 132 | .build(); |
| 131 | } | 133 | } |
| 132 | 134 | ||
| @@ -158,5 +160,26 @@ public class YudaoSwaggerAutoConfiguration { | @@ -158,5 +160,26 @@ public class YudaoSwaggerAutoConfiguration { | ||
| 158 | .schema(new StringSchema()._default("Bearer test1").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1 | 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 |