Пишу небольшой gateway для API на Express. Сервер принимает HTTP-запрос, читает токен и делает несколько запросов на основной REST API, снабжая каждый этим токеном.
Чтобы не вызывать каждый метод из модуля
api с токеном, использую конструктор и классы ES6. Но возникли сомнения в правильности моего подхода. Не пахнет ли здесь бесконтрольным созданием экземпляров класса Api при множественных запросах от разных клиентов и последующими утечками памяти?
Ну и в целом может есть более элегантный способ организовать код?
// index.js
const Api = require('./api')
app.get('/forward_to_api', function (req, res) {
let api = new Api(res.locals.token)
api.getSomething('something')
.then(response => ...)
.catch(error => console.log(`Error: ${error.message}`))
api.getSomethingNew('somethingNew')
.then(response => ...)
.catch(error => console.log(`Error: ${error.message}`))
})
// api.js
module.exports = class Api {
constructor(token) {
this.config = {
headers: { 'Authorization': `Bearer ${token}` }
}
}
getSomething(name) {
return axios.get(`/api/something/${name}`, this.config)
}
getSomethingNew(name) {
return axios.get(`/api/something_new/${name}`, this.config)
}
}