#node.js #api #express
#node.js #API #выразить
Вопрос:
Я использую Node и Express для обработки своих внутренних запросов. Я делаю вызов с внешнего интерфейса:
const newData = {id: sub, first_name: given_name, last_name: family_name, email: email}
const requestOptions = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(newData)
}
fetch(`/add`, requestOptions)
.then(res => res.json())
.then(data => console.log(data))
.catch(console.log('error2'));
которые распознаются моей конечной точкой «/ add». На данный момент я просто хочу console.log
получить тело запроса, поэтому моя конечная точка:
router.post('/add', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
console.log(req.body, 'hit')
})
Однако журнал консоли сервера отображается как {} 'hit'
. Когда я использую вкладку сеть, я вижу, что запрос содержит полезную нагрузку, содержащую id, first_name, last_name, and email
.
Кто-нибудь может сказать мне, чего мне не хватает, чтобы перенести мои данные на мой сервер.
Также мой сервер настроен body-parser
следующим образом:
const bodyParser = require('body-parser');
const app = express();
app.use(
bodyParser.urlencoded({
extended: false,
})
);
Ответ №1:
Поскольку вы отправляете application/json
тип контента, вам следует использовать bodyParser.json()
вместо bodyParser.urlencoded({ extended: false })
.
Пример:
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json())