第一步,配置原始pont-config.json,自动生成pontTemplate.ts文件

第二步,复制pontTemplate.ts中内容,新建自定义文件,粘贴进去代码
import {
Interface,
BaseClass,
Property,
CodeGenerator,
Surrounding,
} from 'pont-engine';
export default class MyGenerator extends CodeGenerator {
getInterfaceContentInDeclaration(inter: Interface) {
const requestParams = inter.getRequestParams();
const paramsCode = inter.getParamsCode('Params');
return `
export ${paramsCode}
export type Response = ${inter.responseType}
export const init: Response;
export function request(${requestParams}): Promise<Response>;
`;
}
getBaseClassInDeclaration(base: BaseClass) {
const originProps = base.properties;
base.properties = base.properties.map((prop) => {
return new Property({
...prop,
required: false,
});
});
const result = super.getBaseClassInDeclaration(base);
base.properties = originProps;
return result;
}
getInterfaceContent(inter: Interface) {
const method = inter.method.toUpperCase();
const requestParams = inter.getRequestParams(this.surrounding);
const paramsCode = inter.getParamsCode('Params', this.surrounding);
const paramsArgs: Property[] = [];
if (method === 'POST' || method === 'PUT') {
// 纯请求参数
const queryArgs: Property[] = paramsArgs.filter((p) => p.in === 'query');
if (queryArgs.length > 0) {
return `
import http from '@/lib/http'
import { toURL } from '@/lib/util'
/**
* ${inter.description}
* @param {Object} formData
* @param {import('axios').AxiosRequestConfig} config axios 可选配置
* @return {Promise<*>}
*/
export function request(data, config) {
data = data || {}
const url = toURL("${inter.path}", data)
return http.request({ url, method: '${method}', data, ...config });
}
`;
} else {
return `
import http from '@/lib/http'
import { toURL } from '@/lib/util'
/**
* ${inter.description}
* @param {Object} data
* @param {import('axios').AxiosRequestConfig} config axios 可选配置
* @return {Promise<*>}
*/
export function request(data, config) {
data = data || {}
const url = toURL("${inter.path}", data)
return http.request({ url, method: '${method}', data, ...config });
}
`;
}
}
return `
import http from '@/lib/http'
import { toURL } from '@/lib/util'
/**
* ${inter.description}
*
* @param {Object} params
${paramsArgs
.map((p) => ` * @param {string} params.${p.name} ${p.description || ''}`)
.join('\n')}
* @param {import('axios').AxiosRequestConfig} config axios 可选配置
*
* @return {Promise<*>}
*/
export function request(params, config) {
params = params || {}
const url = toURL("/mediinfo-lyra-menhu${inter.path}", params)
return http.request({ url,method: '${method}', params, ...config });
}
`;
}
}
第三步,替换pont-config.json中的templatePath路径为新建的文件路径,templateType设置为fetch

第四步,使用VScodepont工具生成代码

394

被折叠的 条评论
为什么被折叠?



