Archived
forked from admin/userbase
57 lines
2.4 KiB
TypeScript
57 lines
2.4 KiB
TypeScript
import type { GeneratorConfig } from "@alova/wormhole";
|
|
|
|
export default {
|
|
generator: [
|
|
{
|
|
input: "http://localhost:8060/v3/api-docs",
|
|
// 文档平台类型
|
|
platform: "swagger",
|
|
|
|
// 生成代码的输出目录
|
|
output: "src/api",
|
|
// 响应数据的媒体类型
|
|
responseMediaType: "application/json",
|
|
// 请求体数据的媒体类型
|
|
bodyMediaType: "application/json",
|
|
// 生成的 API 版本
|
|
version: 1,
|
|
// 生成代码类型
|
|
type: "typescript",
|
|
// 全局 API 名称
|
|
global: "Apis",
|
|
splitImplementation: true,
|
|
implementation: "inline",
|
|
// API 处理函数
|
|
handleApi: apiDescriptor => {
|
|
// 过滤掉已废弃的 API
|
|
if (apiDescriptor.deprecated) {
|
|
return undefined;
|
|
}
|
|
const newOpId = apiDescriptor.summary?.trim() || apiDescriptor.operationId;
|
|
const url = apiDescriptor.url.replace(/^\/{platform}\//, "/api/");
|
|
// springdoc 默认把 Controller 类名转为 kebab tag(如 base-controller),
|
|
// 而业务代码统一用 Pascal 无 Controller 的命名空间(如 Base)调用。
|
|
// 这里剥掉 -controller 后缀并转为 PascalCase,使 wormhole 生成的
|
|
// API 路径(Base.getUserInfo 等)与 Apis.Base.xxx 调用风格一致。
|
|
// 由于转换结果是合法 JS 标识符,wormhole 会原样保留、不做 camelCase 改写。
|
|
if (Array.isArray(apiDescriptor.tags)) {
|
|
apiDescriptor.tags = apiDescriptor.tags.map((tag: string) => {
|
|
const stripped = tag.replace(/-?controller$/i, "");
|
|
return stripped
|
|
.split(/[-_\s]+/)
|
|
.filter(Boolean)
|
|
.map((w: string) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())
|
|
.join("");
|
|
});
|
|
}
|
|
|
|
return {
|
|
...apiDescriptor,
|
|
operationId: newOpId, // 关键:改掉它
|
|
url,
|
|
};
|
|
},
|
|
},
|
|
],
|
|
} as GeneratorConfig;
|