Невозможно сделать вызов API с использованием экземпляра axios

export class TrelloService {
    public instance: AxiosInstance;
    constructor(token: string) {
        this.instance = axios.create({
            baseURL: `https://api.trello.com/1?key=${process.env.TRELLO_API_KEY}&token=${token}`,
        });
    }

    public async getUserDetails(email: string): Promise<any> {
        const userDetails = await this.instance.get(`/members/${email}`);
        return userDetails;
    }
    
    public static async getUserDetails2(
        email: string,
        token: string,
        throwError = false,
    ): Promise<any> {
        let userDetails: any = null;

        const userDetails = await axios.get(`https://api.trello.com/1/members/${email}key=${process.env.TRELLO_API_KEY}&token=${token}`)
        return userDetails;
    }
}

Если я вызываю getUserDetails, создавая объект класса TrelloService, он не работает. Trello выдает мне ошибку с кодом состояния 404. Но если я напрямую вызываю метод getUserDetails2, он работает нормально. Это часть создания объекта

    const trelloService = new TrelloService(accessToken);
    const temp = await trelloService.getUserDetails(email);

Я пытался манипулировать экземпляром axios, но у меня это не сработало. Это потому, что URL-адрес прикрепляется в конце, даже после переменной запроса?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

К сожалению, вы пытаетесь получить неверный URL:

# invalid:
https://api.trello.com/1?key=key&token=token/members/[email protected]

# valid:
https://api.trello.com/1/members/[email protected]?key=key&token=token

Попробуйте добавить параметры для каждого запроса:

export class TrelloService {
  public instance: AxiosInstance;
  public baseParams: { key: string; token: string };

  constructor(token: string) {
    this.instance = axios.create({
      baseURL: `https://api.trello.com/1`,
    });
    this.baseParams = {
      key: process.env.TRELLO_API_KEY,
      token,
    };
  }

  public async getUserDetails(email: string): Promise<any> {
    const userDetails = await this.instance.get(`/members/${email}`, {
      params: { otherParam: "1", ...this.baseParams },
    });
    return userDetails;
  }
}

Вы также можете использовать перехватчик для добавления параметров к каждому запросу.

Ответ принят как подходящий

Я думаю, проблема в том, что аксиомы объединяют строки вместе

Вы должны использовать параметр params

Изменить эту строку

this.instance = axios.create({
  baseURL: `https://api.trello.com/1?key=${process.env.TRELLO_API_KEY}&token=${token}`,
});

к

this.instance = axios.create({
  baseURL: `https://api.trello.com/1`,
  params: {
    key: process.env.TRELLO_API_KEY,
    token: token,
  }
});

Другие вопросы по теме