У меня есть эта функция, где я передаю некоторые параметры на свой сервер:
async function createOrderItemForCardInList(cardID, value, listID) {
const token = await getToken();
const response = await fetch(`${basePath}/order/list/${listID}`, {
method: 'POST',
body: JSON.stringify({
cardID,
value
}),
headers: getTokenAuthHeaders(token)
});
return response.json();
}
И на моем сервере у меня есть маршрут, определенный для передачи вызова:
router.post('/list/:id', TokenController.isAValidToken, async (req, res) => {
const { cardID, value } = req.query;
console.info(value, cardID); // <- This prints 'undefined'
try {
const orderItem = await OrderItemController.createOrderItem(value, req.params.id, cardID);
res.json(orderItem);
} catch (error) {
ErrorController.errorCallback(error, res);
}
});
Как видно из комментария к моему роутеру, параметры запроса que не передаются, как мне решить эту проблему?
Я точно знаю, что параметры выводят соответствующие значения, когда я помещаю console.info(cardID, value, listID)
в функцию createOrderItemForCardInList
.
... он же req.body
. Кроме того, предоставляет ли getTokenAuthHeaders()
заголовок типа контента? Если нет, то вы пропали content-type: application/json
Вы уничтожаете запрос, который добавляется после ? в запросе. IE .com?cardID=777&value=10000
Однако в исходном коде вы отправляете его через тело POST. Измените req.query на req.body для достижения желаемого результата.
router.post('/list/:id', TokenController.isAValidToken, async (req, res) => {
const { cardID, value } = req.body;
console.info(value, cardID); // <- This prints 'undefined'
try {
const orderItem = await OrderItemController.createOrderItem(value, req.params.id, cardID);
res.json(orderItem);
} catch (error) {
ErrorController.errorCallback(error, res);
}
});
Вы правы, я использовал не то свойство, спасибо!
POST отправляет данные в теле запроса