Как использовать клиент Axios API, сгенерированный генератором кода OpenAPITools? - PullRequest
0 голосов
/ 17 марта 2019

Поэтому я использовал Swagger Codegen для генерации API-клиента для клиента Fetch в моем приложении Vue.
Теперь я хотел вместо этого использовать Axios, поэтому я использовал генератор кода OpenAPITools typcript-axios.
java -jar .\openapi-generator-cli.jar generate -i http://localhost:5000/swagger/v1/swagger.json -g typescript-axios -o app\api

Когда я пытаюсь присвоить напечатанный ответ моей локальной переменной (того же типа):

@Component
export default class Themes extends Vue {
  private themesApi!: ThemesApi;
  private themes: Theme[];

  constructor() {
    super();
    this.themes = [];
  }

  private async mounted() {
    const apiConfig: Configuration = {
      basePath: config.API_URL,
    };

    this.themesApi = new ThemesApi(apiConfig);
  }

  private async getThemes() {
    this.themes = await this.themesApi.getThemes();
  }
}

, я получаю эту ошибку TypeScript:

> 139:5 Type 'AxiosResponse<Theme[]>' is missing the following
> properties from type 'Theme[]': length, pop, push, concat, and 28
> more.
>     137 | 
>     138 |   private async getThemes() {
>   > 139 |     this.themes = await this.themesApi.getThemes();
>         |     ^

Локальная переменная того же типа: enter image description here так почему я получаю эту ошибку?

1 Ответ

1 голос
/ 17 марта 2019

Посмотрите на типы для Axios, в частности AxiosResponse: https://github.com/axios/axios/blob/master/index.d.ts#L70

Вы увидите, что он принимает универсальный, в вашем случае Theme, который будет доступен в свойстве data. Так что вам нужно вывести свою ценность, используя что-то вроде следующего:

private async getThemes() {
  const response = await this.themesApi.getThemes();
  this.themes = response.data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...