参数未传递到服务器路由器
Parameters not being passed to server router
我有这个功能,可以将一些参数传递给我的服务器:
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.log(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 request的参数传不出去,请问如何解决?
我知道当我在 createOrderItemForCardInList
函数上放置 console.log(cardID, value, listID)
时,参数会打印出它们对应的值。
您正在破坏一个在 ? 之后添加的查询。在请求中。 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.log(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);
}
});
我有这个功能,可以将一些参数传递给我的服务器:
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.log(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 request的参数传不出去,请问如何解决?
我知道当我在 createOrderItemForCardInList
函数上放置 console.log(cardID, value, listID)
时,参数会打印出它们对应的值。
您正在破坏一个在 ? 之后添加的查询。在请求中。 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.log(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);
}
});