68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { generateService } from '@umijs/openapi';
|
|
import type { RequestOptions } from './src/utils/request';
|
|
|
|
const re = /controller[-_ .](\w)/gi;
|
|
|
|
// swagger-typescript-api
|
|
generateService({
|
|
schemaPath: 'http://127.0.0.1:7001/api-docs-json',
|
|
serversPath: './src/api/backend',
|
|
requestOptionsType: 'RequestOptions',
|
|
// 自定义网络请求函数路径
|
|
requestImportStatement: 'import { request, type RequestOptions } from "@/utils/request";',
|
|
hook: {
|
|
// @ts-ignore
|
|
customFunctionName(operationObject, apiPath) {
|
|
const { operationId } = operationObject;
|
|
|
|
if (!operationId) {
|
|
console.warn('[Warning] no operationId', apiPath);
|
|
return;
|
|
}
|
|
|
|
const funcName = operationId.replace(re, (_all, letter) => letter.toUpperCase());
|
|
|
|
operationObject.operationId = funcName;
|
|
|
|
return funcName;
|
|
},
|
|
// @ts-ignore
|
|
customFileNames(operationObject, apiPath) {
|
|
const { operationId } = operationObject;
|
|
|
|
if (!operationId) {
|
|
console.warn('[Warning] no operationId', apiPath);
|
|
return;
|
|
}
|
|
const controllerName = operationId.split(re)[0];
|
|
const moduleName = operationObject.tags?.[0].split(' - ')[0];
|
|
|
|
if (moduleName === controllerName) {
|
|
return [controllerName];
|
|
} else if (moduleName && moduleName !== controllerName) {
|
|
return [`${moduleName}_${controllerName}`];
|
|
}
|
|
return;
|
|
},
|
|
customType(schemaObject, namespace, defaultGetType) {
|
|
const type = defaultGetType(schemaObject, namespace);
|
|
// 提取出 data 的类型
|
|
const regex = /API\.ResOp & { 'data'\?: (.+); }/;
|
|
return type.replace(regex, '$1');
|
|
},
|
|
customOptionsDefaultValue(data): RequestOptions {
|
|
const { summary } = data;
|
|
|
|
if (summary?.startsWith('创建') || summary?.startsWith('新增')) {
|
|
return { successMsg: '创建成功' };
|
|
} else if (summary?.startsWith('更新')) {
|
|
return { successMsg: '更新成功' };
|
|
} else if (summary?.startsWith('删除')) {
|
|
return { successMsg: '删除成功' };
|
|
}
|
|
|
|
return {};
|
|
},
|
|
},
|
|
});
|