javascript - Este posibil să treci un AxiosInstance către clase TypeScript generate de openapi-generator?


Cum pot să transmit instanța mea AxiosInstance către clasele generate de template-ul openapi-generator typescript-axios?

Am încercat să schimb prototipul clasei BaseAPI, dar nu funcționează. Și nu există locuri unde să pot transmite instanța mea de axios

import { HotelsRestServiceApi, Configuration } from '../../generated/openapi';
import { BaseAPI } from '../../generated/openapi/base'; //Base api class generated by openapi
import { axiosClientNoAuth } from '../index'; //My AxiosInstance

const config = new Configuration({
  basePath: 'http://localhost:8080',
});

const baseApi = new BaseAPI(config, 'http://localhost:8080', axiosClientNoAuth);

const axios = new RestServiceApi(config);

axios.prototype.__proto__ = baseApi.prototype;

Răspuns #1

Am rezolvat problema modificând șablonul:

  • descarcă fișierul baseApi.mustache din openapi-templates

  • pune-l undeva în proiectul tău, de exemplu în .openapi-generator/templates

  • modificați importul globalaxios cu axiosinstance-ul dumneavoastră:

    import { axiosClient as globalAxios } from '../../api';
  • generează cod nou cu cli:

      rm -rf src/generated/openapi; openapi-generator-cli generate -t .openapi-generator/templates -c openapi-generator-config.yaml
    

(Fișierul meu openapi-generator-config.yaml)

generatorName: typescript-axios
outputDir: src/generated/openapi
cleanupOutput: true
inputSpec: ../app/backend/target/openapi.yaml
additionalProperties:
  supportsES6: true