node.js - API中的Put方法总是收到空的请求体
问题描述
我已经构建了一个 NodeJS Restful API,除了一个之外,几乎每条路由都在工作。我有一个 Angular 前端,使用 httpClientModule 发送请求。
当我尝试对一个特定项目发出 put 请求时,该请求在到达服务器时为空。我有 3 条其他路线发出 put 请求,它们都工作正常。谁能解释这里发生了什么。我查看了其他一些讨论类似问题的线程,但没有一个问题与我的相同。我真的无法理解正在发生的事情。
这是一些相关的代码。提前致谢。
API方法
router.put("/api/login/:_id", passport.authenticate("jwt", { session: false }), (req, res) => {
console.log(req.body)
User.findById(req.params._id)
.then((user) => {
bcrypt.compare(req.body.password, user.password).then((isMatched) => {
if (isMatched) {
User.findByIdAndUpdate(_id, { password: req.body.password })
.then(() => {
res.sendStatus(200);
})
.catch((err) => {
console.log("Password update error" + err);
});
} else {
res.status(400);
}
});
})
.catch((err) => {
console.log("Password Update Error" + err);
res.status(400);
});
});
角服务方法
newPassword(_id: any, password:any):Observable<any>
{
return this.http.put(this.url+`/admin/api/login/${_id}`, password);
}
解决方案
如果您将密码正文包装到请求的对象中怎么办?比方说:
newPassword(_id: any, password: any): Observable < any >
{
return this.http.put(this.url + `/admin/api/login/${_id}`, {password});
}
这样,body 就包含了一个password
属性。
推荐阅读
- android - 获取此路径以检查文件是否存在
- javascript - 使用 HTML id 与 JS 变量进行比较?
- python - 2 个键的 MapReduce Reducer - Python
- oauth-2.0 - 登录 IdentityServer4 时访问令牌无效/缺少声明
- c++ - CoreML 自定义层:使用金属着色器的像素标准化
- javascript - 使用 VueX $store 到 Vue 路由器
- python - 如何将具有数字和非数字条目的numpy数组转换为所有浮点数
- python - Python,获取 AttributeError:“ElectricCar”对象没有属性“电池”
- c# - c# WPF - 文件访问被拒绝
- wordpress - add_filter 在 Wordpress 自定义登录页面上不起作用