我创建了一个放置请求,当我使用邮递员尝试更新用户表中的电子邮件字段时,我得到Cannot PUT /api/user/5dab49630sdfsd3025a09d31d
我对nodejs和expressjs还是很陌生,所以如果这很简单,我深表歉意。这可能是我在邮递员中提出PUT请求的方式。我不太确定该如何通过其他方式传递电子邮件值。
邮递员PUT请求
http://localhost:3000/api/user/5dab496305de3025a09d31d/?email=newemail@gmail.com
app.put('/api/user/email/:id', (req, res) =>
User.update(
{email: req.body.email},
{where: {id: req.params.id}}
).then( user => {
console.log(user);
res.json(user);
// res.sendStatus(200);
})
.catch(err => console.log(err)));
});
答案 0 :(得分:2)
我们使用PUT,POST请求,因为我们不想通过URL公开用户信息,而我们的座右铭是在请求正文中隐藏用户信息。我们可以在URL中使用唯一字符串的id,但应避免在URL本身中使用电子邮件。而不是使用json body:-
{
newEmail: "abc@abc.com"
}
获取以下ins代码:-
req.body.newEmail
这是您的更新代码:-
app.put('/api/user/email/:id', (req, res) =>
User.update(
{id: req.params.id},
{email: req.body.newEmail}
).then( user => {
console.log(user);
res.json(user);
// res.sendStatus(200);
}).catch(err => console.log(err)));
});
在邮递员中,可以选择传递JSON正文。您只需要选择URL测试字段下方显示的正文,然后选择JSON类型即可。 希望这会有所帮助!
答案 1 :(得分:0)
如果您尝试通过url传递它们,则应使用req.params.id和req.params.email。您可以使用req.params.id并将其添加到url的末尾,并在请求的正文中使用req.body.newEmail。
这是一个可行的示例,您可以对其进行适当修改。
router.put('/userinformation/incvh5/:id', (req, res) =>
User.update(
{vh5rec: req.body.vh5rec},
{where: {id: req.params.id}}
).then( user => {
console.log(user);
res.json(user);
// res.sendStatus(200);
})
.catch(err => console.log(err)));