英文:
Is it possible to pass an AxiosInstance to openapi-generator generated TypeScript classes?
问题
You can pass your AxiosInstance to classes generated by the openapi-generator TypeScript Axios template by extending the generated class and setting the AxiosInstance in the constructor. Here's an example:
import { HotelsRestServiceApi, Configuration } from '../../generated/openapi';
import { axiosClientNoAuth } from '../index'; // Your AxiosInstance
class CustomHotelsRestServiceApi extends HotelsRestServiceApi {
constructor(config: Configuration, axiosInstance: AxiosInstance) {
super(config, axiosInstance);
}
}
const config = new Configuration({
basePath: 'http://localhost:8080',
});
const customAxios = new CustomHotelsRestServiceApi(config, axiosClientNoAuth);
This way, you create a custom class that extends the generated class and passes your AxiosInstance to it in the constructor.
英文:
How can i pass my AxiosInstance to classes generated by openapi-generator typescript-axios template?
I tried change prototype of BaseAPI class, but it doesn't work. And there are no places where i can pass my axios instance
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;
答案1
得分: 1
修改模板解决了问题:
-
从openapi-templates下载 baseApi.mustache 文件
-
将其放在项目中的某个位置,例如
.openapi-generator/templates
-
修改导入 globalaxios 为你的 axios 实例:
import { axiosClient as globalAxios } from '../../api';
-
使用 CLI 生成新代码:
rm -rf src/generated/openapi; openapi-generator-cli generate -t .openapi-generator/templates -c openapi-generator-config.yaml
(我的 openapi-generator-config.yaml)
generatorName: typescript-axios
outputDir: src/generated/openapi
cleanupOutput: true
inputSpec: ../app/backend/target/openapi.yaml
additionalProperties:
supportsES6: true
英文:
Got solved it by modifying template:
-
download baseApi.mustache file from openapi-templates
-
put it somewhere in your project, for example in
.openapi-generator/templates
-
modify import globalaxios to your axiosinstance:
import { axiosClient as globalAxios } from '../../api';
-
generate new code with cli:
rm -rf src/generated/openapi; openapi-generator-cli generate -t .openapi-generator/templates -c openapi-generator-config.yaml
(My openapi-generator-config.yaml)
generatorName: typescript-axios
outputDir: src/generated/openapi
cleanupOutput: true
inputSpec: ../app/backend/target/openapi.yaml
additionalProperties:
supportsES6: true
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论