У меня есть проект, который требует использования нескольких вызовов API IOTA. Итак, вот пример API GetNodeInfo
url: https://docs.iota.org/docs/node-software/0.1/iri/references/api-reference#getnodeinfo
или
var request = require('request');
var command = {"command": "getNodeInfo"}
var options = {
url: 'http://localhost:14265',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-IOTA-API-Version': '1'
},
json: command
};
request(options, function (error, response, data) {
if (!error && response.statusCode == 200) {
console.log(data);
}
});
Однако я узнал, что недавно библиотека запросов устарела отсюда: https://github.com/request/request/issues/3142
Кроме того, мне нужно использовать Promises и async / await, потому что мне нужно выполнять несколько вызовов api синхронно, с большей скоростью и производительностью . Итак, я попытался заменить запрос на node-fetch
const fetch = require('node-fetch');
const express = require('express');
const router = express.Router();
var url ='http://localhost:14265';
var command = {
'command': 'getNodeInfo'
}
var options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-IOTA-API-Version': '1'
},
json: command
};
router.get("/test", (req, res) => {
fetch(url, options)
.then(res => res.json())
.then(json => {
console.log('====================================');
console.log(JSON.stringify(json));
console.log('====================================');
// return data and do something
})
.catch(err => console.log(err));
})
module.exports = router;
Но когда я сохраняю команду json:, я получаю сообщение об ошибке неверных параметров, и если я заменяю его на body: command, я получить эту ошибку
{"exception": "java .lang.IllegalStateException: ожидалось BEGIN_ARRAY, но было STRING в строке 1 столбец 2 путь $ [0]", "duration": 1}
Итак, посоветуйте, пожалуйста, что мне делать? потому что я пытался выполнить несколько вызовов api с запросом для одной функции и работал медленно.
Следует ли мне продолжать использовать запрос, даже если он устарел и имеет некоторые проблемы, или его можно заменить чем-то другим ??
Помогите, пожалуйста!
Заранее спасибо.