#node.js #json #express
#node.js #json #выразить
Вопрос:
Я новичок в NodeJS, и я выполняю упражнение для вычисления суммы значения JSON, которое я ввел в POST-запросе, но postman выдает мне сообщение об ошибке
«Невозможно ОПУБЛИКОВАТЬ / добавить».
Я что-то упустил? Вот мой код:
const express = require('express');
const math = require('mathjs');
var bodyParser = require('body-parser');
const app = express();
const host = "127.0.0.1"
const port = 3000
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
async function add(tal) {
let promise = await fetch('http://127.0.0.1:3000/apiServer/add', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(tal) }
)
let summa = math.sum(promise);
return summa;
}
app.post('apiServer/add', (req, res) => {
var tal = req.body.user;
res.send(add(tal));
});
app.listen(port, host, () => {
console.log(`The server is running at: http://${host}:${port}`);
});
Публикация:
{
"tal": "10,343,24,345,22,23,233"
}
Комментарии:
1. Конечная точка POST, которую вы определили, предназначена для path:
apiServer/add
, поэтому вы должны отправлятьapiServer/add
. Кроме того,async
метод всегда будет возвращать обещание, вам нужно будет получить значение разрешенияadd()
после его вызова, прежде чем отправлять обратно значение2. @Ник, спасибо за быстрый ответ. Сначала я попробовал /add и не сработал, затем сменил на 7apiServer/add .
3. Получаете ли вы сообщение об ошибке при попытке отправить сообщение
apiServer/add
? Это одна и та же ошибка разных4. Этого не должно быть
.user
, но должно быть.tal
вместо этого:var tal = req.body.user;
поскольку данные, которые вы отправляете, похоже, не имеют.user
свойства5. @Nick, просто добавив /, postman возвращает пустой, но я получаю «Необработанное promiserejectionwarning:» на терминале.
Ответ №1:
Эта функция выглядит циклической. Вы используете выборку для вызова своей собственной конечной точки, я думаю, вам просто нужно создать функцию add, а также функцию get или post, чтобы затем вызвать add
вот пример
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
function add(num1, num2) {
return parseFloat(num1) parseFloat(num2);
}
app.get('/api/add', (req, res) => {
const num1 = req.query.num1;
const num2 = req.query.num2;
const total = add(num1, num2);
res.send(`The total is ${total}`);
});
app.listen(port, () => {
console.log(`The server is running at http://localhost:${port}`);
});
Затем вы можете вызвать его в приложении типа Postman или Insomnia, используя get, подобный этому
http://localhost:3000/api/add?num1=12amp;num2=3