pont拉取代码

第一步,配置原始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工具生成代码

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值