Skip to content

Latest commit

 

History

History
1047 lines (973 loc) · 37.1 KB

request-api-guide.md

File metadata and controls

1047 lines (973 loc) · 37.1 KB

接口API使用指引

  • 生成的schema-api/request-api.ts文件,可直接用于项目请求接口,无需手动编写代码。

http 接口api数据TS类型声明

  • 文件路径:schema-api/interface-api.ts
  • 可在项目中用于接口入参和返回数据TS类型声明。
  • url接口路径作为key
  • 接口方法分组显示,支持相同url多个方法(如:同一个url,get,post请求)
  • Query:get参数
  • Body:Post参数
  • Response:接口返回数据
  • 生成文件例子:
/**
 * This file was auto-generated by @liangskyli/openapi-gen-ts.
 * Do not make direct changes to the file.
 */

import type { paths } from './ts-schema';

export interface IApi {
    '/root/v4/getQueryParams1-v4': {
        get: {
            Query: paths['/root/v4/getQueryParams1-v4']['get']['parameters']['query'];
            Response: paths['/root/v4/getQueryParams1-v4']['get']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/getNoQueryParams-v4': {
        get: {
            Response: paths['/root/v4/getNoQueryParams-v4']['get']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/postBody1-v4': {
        post: {
            Query: paths['/root/v4/postBody1-v4']['post']['parameters']['query'];
            Body: paths['/root/v4/postBody1-v4']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v4/postBody1-v4']['post']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/postBody2-v4': {
        post: {
            Query: paths['/root/v4/postBody2-v4']['post']['parameters']['query'];
            Body?: NonNullable<
                paths['/root/v4/postBody2-v4']['post']['requestBody']
            >['content']['application/json'];
            Response: paths['/root/v4/postBody2-v4']['post']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/getQueryParams2-v4/{id}': {
        head: {
            Query: paths['/root/v4/getQueryParams2-v4/{id}']['head']['parameters']['query'];
            Path: paths['/root/v4/getQueryParams2-v4/{id}']['head']['parameters']['path'];
            Response: paths['/root/v4/getQueryParams2-v4/{id}']['head']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/getQueryParams3-v4': {
        patch: {
            Query: paths['/root/v4/getQueryParams3-v4']['patch']['parameters']['query'];
            Response: paths['/root/v4/getQueryParams3-v4']['patch']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/file': {
        post: {
            Body: paths['/root/v4/file']['post']['requestBody']['content']['multipart/form-data'];
            Response: paths['/root/v4/file']['post']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/files': {
        post: {
            Body: paths['/root/v4/files']['post']['requestBody']['content']['multipart/form-data'];
            Response: paths['/root/v4/files']['post']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/Put': {
        put: {
            Query: paths['/root/v4/Put']['put']['parameters']['query'];
            Response: paths['/root/v4/Put']['put']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/Delete': {
        delete: {
            Query: paths['/root/v4/Delete']['delete']['parameters']['query'];
            Response: paths['/root/v4/Delete']['delete']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4': {
        get: {
            Query: paths['/root/v4']['get']['parameters']['query'];
            Response: paths['/root/v4']['get']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/v4/postBody3-v4': {
        post: {
            Body: paths['/root/v4/postBody3-v4']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v4/postBody3-v4']['post']['responses']['200']['content']['text/plain'];
        };
    };
    '/root/getQueryParams1-v3': {
        get: {
            Query: paths['/root/getQueryParams1-v3']['get']['parameters']['query'];
            Response: paths['/root/getQueryParams1-v3']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/getQueryParam-v3/{id}': {
        get: {
            Query: paths['/root/getQueryParam-v3/{id}']['get']['parameters']['query'];
            Path: paths['/root/getQueryParam-v3/{id}']['get']['parameters']['path'];
            Response: paths['/root/getQueryParam-v3/{id}']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/postBody1-v3': {
        post: {
            Body: paths['/root/postBody1-v3']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/postBody1-v3']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/postBody2-v3': {
        post: {
            Body: paths['/root/postBody2-v3']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/postBody2-v3']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v2/getQueryParams1-v2': {
        get: {
            Query: paths['/root/v2/getQueryParams1-v2']['get']['parameters']['query'];
            Response: paths['/root/v2/getQueryParams1-v2']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v2/getQueryParam-v2/{id}': {
        get: {
            Query: paths['/root/v2/getQueryParam-v2/{id}']['get']['parameters']['query'];
            Path: paths['/root/v2/getQueryParam-v2/{id}']['get']['parameters']['path'];
            Response: paths['/root/v2/getQueryParam-v2/{id}']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getQueryParams1': {
        get: {
            Query: paths['/root/v1/getQueryParams1']['get']['parameters']['query'];
            Response: paths['/root/v1/getQueryParams1']['get']['responses']['200']['content']['application/json'];
        };
        post: {
            Body: paths['/root/v1/getQueryParams1']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/getQueryParams1']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getQueryParams2': {
        get: {
            Query: paths['/root/v1/getQueryParams2']['get']['parameters']['query'];
            Response: paths['/root/v1/getQueryParams2']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getQueryParam': {
        get: {
            Query: paths['/root/v1/getQueryParam']['get']['parameters']['query'];
            Response: paths['/root/v1/getQueryParam']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getQueryParamWithQueryParams/{path1}/{path2}': {
        get: {
            Query: paths['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['parameters']['query'];
            Path: paths['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['parameters']['path'];
            Response: paths['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getParam': {
        get: {
            Path: paths['/root/v1/getParam']['get']['parameters']['path'];
            Response: paths['/root/v1/getParam']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/getQueryParamWithParam': {
        get: {
            Query: paths['/root/v1/getQueryParamWithParam']['get']['parameters']['query'];
            Path: paths['/root/v1/getQueryParamWithParam']['get']['parameters']['path'];
            Response: paths['/root/v1/getQueryParamWithParam']['get']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBody1': {
        post: {
            Query: paths['/root/v1/postBody1']['post']['parameters']['query'];
            Body: paths['/root/v1/postBody1']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/postBody1']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBody2': {
        post: {
            Body: paths['/root/v1/postBody2']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/postBody2']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBody3': {
        post: {
            Body: paths['/root/v1/postBody3']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/postBody3']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBody4': {
        post: {
            Body: paths['/root/v1/postBody4']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/postBody4']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBody5': {
        post: {
            Body: paths['/root/v1/postBody5']['post']['requestBody']['content']['application/json'] &
                paths['/root/v1/postBody5']['post']['requestBody']['content']['multipart/form-data'];
            Response: paths['/root/v1/postBody5']['post']['responses']['200']['content']['application/json'];
        };
    };
    '/root/v1/postBodyParam': {
        post: {
            Body: paths['/root/v1/postBodyParam']['post']['requestBody']['content']['application/json'];
            Response: paths['/root/v1/postBodyParam']['post']['responses']['200']['content']['application/json'];
        };
    };
}

生成的schema-api/request-api.ts文件

  • 可直接用于项目请求接口,无需手动编写代码。
  • 生成文件例子:
/**
 * This file was auto-generated by @liangskyli/openapi-gen-ts.
 * Do not make direct changes to the file.
 */

import type { AxiosRequestConfig } from '../../../example/request';
import request from '../../../example/request';
import type { IApi } from './interface-api';

type IConfig<
    T extends Record<any, any> | unknown,
    U extends Record<any, any>,
> = T & U;
type Equal<T, U> = (<P>(x: P) => P extends T ? 1 : 2) extends <P>(
        x: P,
    ) => P extends U ? 1 : 2
    ? true
    : false;

export const requestApi = {
    '/root/v4/getQueryParams1-v4': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v4/getQueryParams1-v4']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v4/getQueryParams1-v4']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v4/getQueryParams1-v4';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4/getNoQueryParams-v4': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url'
                >,
                Record<any, any>
            >,
        ): Promise<IApi['/root/v4/getNoQueryParams-v4']['get']['Response']> => {
            const { ...otherConfig } = config;
            const finalURL = '/root/v4/getNoQueryParams-v4';

            return request({
                method: 'get',
                url: finalURL,

                ...otherConfig,
            });
        },
    },
    '/root/v4/postBody1-v4': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params' | 'data'
                >,
                {
                    params: IApi['/root/v4/postBody1-v4']['post']['Query'];
                    data: IApi['/root/v4/postBody1-v4']['post']['Body'];
                }
            >,
        ): Promise<IApi['/root/v4/postBody1-v4']['post']['Response']> => {
            const { params, data, ...otherConfig } = config;
            const finalURL = '/root/v4/postBody1-v4';

            return request({
                method: 'post',
                url: finalURL,
                params: params,
                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v4/postBody2-v4': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params' | 'data'
                >,
                {
                    params: IApi['/root/v4/postBody2-v4']['post']['Query'];
                    data?: IApi['/root/v4/postBody2-v4']['post']['Body'];
                }
            >,
        ): Promise<IApi['/root/v4/postBody2-v4']['post']['Response']> => {
            const { params, data, ...otherConfig } = config;
            const finalURL = '/root/v4/postBody2-v4';

            return request({
                method: 'post',
                url: finalURL,
                params: params,
                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v4/getQueryParams2-v4/{id}': {
        head: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                {
                    params: IApi['/root/v4/getQueryParams2-v4/{id}']['head']['Query'];
                    path: IApi['/root/v4/getQueryParams2-v4/{id}']['head']['Path'];
                }
            >,
        ): Promise<
            IApi['/root/v4/getQueryParams2-v4/{id}']['head']['Response']
        > => {
            const { params, path, ...otherConfig } = config;

            let finalURL = '/root/v4/getQueryParams2-v4/{id}';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'head',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4/getQueryParams3-v4': {
        patch: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v4/getQueryParams3-v4']['patch']['Query'] }
            >,
        ): Promise<IApi['/root/v4/getQueryParams3-v4']['patch']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v4/getQueryParams3-v4';

            return request({
                method: 'patch',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4/file': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v4/file']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v4/file']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v4/file';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v4/files': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v4/files']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v4/files']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v4/files';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v4/Put': {
        put: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v4/Put']['put']['Query'] }
            >,
        ): Promise<IApi['/root/v4/Put']['put']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v4/Put';

            return request({
                method: 'put',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4/Delete': {
        delete: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v4/Delete']['delete']['Query'] }
            >,
        ): Promise<IApi['/root/v4/Delete']['delete']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v4/Delete';

            return request({
                method: 'delete',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v4']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v4']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v4';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v4/postBody3-v4': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v4/postBody3-v4']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v4/postBody3-v4']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v4/postBody3-v4';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/getQueryParams1-v3': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/getQueryParams1-v3']['get']['Query'] }
            >,
        ): Promise<IApi['/root/getQueryParams1-v3']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/getQueryParams1-v3';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/getQueryParam-v3/{id}': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                {
                    params: IApi['/root/getQueryParam-v3/{id}']['get']['Query'];
                    path: IApi['/root/getQueryParam-v3/{id}']['get']['Path'];
                }
            >,
        ): Promise<IApi['/root/getQueryParam-v3/{id}']['get']['Response']> => {
            const { params, path, ...otherConfig } = config;

            let finalURL = '/root/getQueryParam-v3/{id}';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/postBody1-v3': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/postBody1-v3']['post']['Body'] }
            >,
        ): Promise<IApi['/root/postBody1-v3']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/postBody1-v3';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/postBody2-v3': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/postBody2-v3']['post']['Body'] }
            >,
        ): Promise<IApi['/root/postBody2-v3']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/postBody2-v3';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v2/getQueryParams1-v2': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v2/getQueryParams1-v2']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v2/getQueryParams1-v2']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v2/getQueryParams1-v2';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v2/getQueryParam-v2/{id}': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                {
                    params: IApi['/root/v2/getQueryParam-v2/{id}']['get']['Query'];
                    path: IApi['/root/v2/getQueryParam-v2/{id}']['get']['Path'];
                }
            >,
        ): Promise<IApi['/root/v2/getQueryParam-v2/{id}']['get']['Response']> => {
            const { params, path, ...otherConfig } = config;

            let finalURL = '/root/v2/getQueryParam-v2/{id}';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v1/getQueryParams1': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v1/getQueryParams1']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v1/getQueryParams1']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v1/getQueryParams1';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/getQueryParams1']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/getQueryParams1']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/getQueryParams1';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/getQueryParams2': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v1/getQueryParams2']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v1/getQueryParams2']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v1/getQueryParams2';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v1/getQueryParam': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                { params: IApi['/root/v1/getQueryParam']['get']['Query'] }
            >,
        ): Promise<IApi['/root/v1/getQueryParam']['get']['Response']> => {
            const { params, ...otherConfig } = config;
            const finalURL = '/root/v1/getQueryParam';

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v1/getQueryParamWithQueryParams/{path1}/{path2}': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                {
                    params: IApi['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['Query'];
                    path: IApi['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['Path'];
                }
            >,
        ): Promise<
            IApi['/root/v1/getQueryParamWithQueryParams/{path1}/{path2}']['get']['Response']
        > => {
            const { params, path, ...otherConfig } = config;

            let finalURL = '/root/v1/getQueryParamWithQueryParams/{path1}/{path2}';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v1/getParam': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url'
                >,
                { path: IApi['/root/v1/getParam']['get']['Path'] }
            >,
        ): Promise<IApi['/root/v1/getParam']['get']['Response']> => {
            const { path, ...otherConfig } = config;

            let finalURL = '/root/v1/getParam';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'get',
                url: finalURL,

                ...otherConfig,
            });
        },
    },
    '/root/v1/getQueryParamWithParam': {
        get: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params'
                >,
                {
                    params: IApi['/root/v1/getQueryParamWithParam']['get']['Query'];
                    path: IApi['/root/v1/getQueryParamWithParam']['get']['Path'];
                }
            >,
        ): Promise<IApi['/root/v1/getQueryParamWithParam']['get']['Response']> => {
            const { params, path, ...otherConfig } = config;

            let finalURL = '/root/v1/getQueryParamWithParam';
            for (const [k, v] of Object.entries(path)) {
                finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
            }

            return request({
                method: 'get',
                url: finalURL,
                params: params,

                ...otherConfig,
            });
        },
    },
    '/root/v1/postBody1': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'params' | 'data'
                >,
                {
                    params: IApi['/root/v1/postBody1']['post']['Query'];
                    data: IApi['/root/v1/postBody1']['post']['Body'];
                }
            >,
        ): Promise<IApi['/root/v1/postBody1']['post']['Response']> => {
            const { params, data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBody1';

            return request({
                method: 'post',
                url: finalURL,
                params: params,
                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/postBody2': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/postBody2']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/postBody2']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBody2';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/postBody3': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/postBody3']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/postBody3']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBody3';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/postBody4': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/postBody4']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/postBody4']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBody4';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/postBody5': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/postBody5']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/postBody5']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBody5';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
    '/root/v1/postBodyParam': {
        post: <T extends Record<any, any> | never = never>(
            config: IConfig<
                Omit<
                    Equal<T, never> extends true
                        ? AxiosRequestConfig
                        : T & AxiosRequestConfig,
                    'method' | 'url' | 'data'
                >,
                { data: IApi['/root/v1/postBodyParam']['post']['Body'] }
            >,
        ): Promise<IApi['/root/v1/postBodyParam']['post']['Response']> => {
            const { data, ...otherConfig } = config;
            const finalURL = '/root/v1/postBodyParam';

            return request({
                method: 'post',
                url: finalURL,

                data: data,
                ...otherConfig,
            });
        },
    },
};
  • 使用方法
import { requestApi } from './schema-api/request-api.ts';

requestApi['/root/postBody2-v3'].post({
    data: { a: { postBody1param1: '1' } },
}).then((res) => {
    console.log(res);
});