Я пытаюсь сделать некоторый запрос к API-интерфейсу вещей, используя axios на Node JS, но я получил много ошибок 403 или 500, в то время как с Postman запрос в порядке и возвращает результаты.
Вот ссылки на запрос:
http://api.thingspeak.com/channels/427119/feeds.json?api_key=E2LYNJW88VS4RAWD http://api.thingspeak.com/channels/427080/feeds.json?api_key=GCRAL5SKAPGVYMGR http://api.thingspeak.com/channels/427081/feeds.json?api_key=BNIF0PM91878SFOY http://api.thingspeak.com/channels/427082/feeds.json?api_key=S3F841BJTUCG425N http://api.thingspeak.com/channels/427083/feeds.json?api_key=JTLVAPSNKKJ6CSFN http://api.thingspeak.com/channels/427088/feeds.json?api_key=E5ES85KE9EU4PHRB http://api.thingspeak.com/channels/427089/feeds.json?api_key=3CMI4I2NCAYN1OKH http://api.thingspeak.com/channels/427090/feeds.json?api_key=B2XVSAUZSFAHKYO8
Ниже приведена моя функция loadManyAssets, которую я использую для выполнения всех вызовов перед вызовом функции обратного вызова. Я пытался установить другое время ожидания и ограничение maxsockets, но результаты не изменились.
async function loadManyAssets(assets, callback, timeout) {
const res = []
const config = {
headers: {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0',
},
}
await Promise.map(assets, async asset => {
let error
let content
let ctx
let url
if (_.isObject(asset)) {
ctx = asset.ctx
url = asset.url
} else {
url = asset
}
try {
await axios({
method: 'GET',
httpAgent: new http.Agent({ keepAlive: true, maxSockets: 100 }),
httpsAgent: new https.Agent({ keepAlive: true, maxSockets: 100 }),
url: url,
headers: config,
timeout: timeout,
})
.then(res => {
content = res.data
})
.then(delay.bind(null,1000)) // I tried to put some delay between each request
} catch (e) {
if (!isTesting) console.error(error.message)
error = e
}
res.push({ error, content, ctx })
})
callback(res)
}
Спасибо за помощь!