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-адрес прикрепляется в конце, даже после переменной запроса?
К сожалению, вы пытаетесь получить неверный 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,
}
});