【发布时间】:2020-04-29 01:13:10
【问题描述】:
我正在尝试创建一个使用 Express 和 Mongoose 制作的 RESTful 后端项目,但从 Postman 工具发送数据时,req.body 为空。
我的目录结构如下:
- 源
- index.js
- 型号
- 用户.js
- 存储库
- user.js
- 控制器
- users.js
- 路线
- users.js
- index.js
用户存储库
const User = require("../models/User");
class UserRepository {
constructor(model) {
this.model = model;
}
create(object) {
return this.model.create(object);
}
}
module.exports = new UserRepository(User);
用户控制器
const UserRepository = require("../repositories/user");
function createUser(req, res) {
const user = req.body; // empty
UserRepository.create(user)
.then(res.json)
.catch(err => res.status(500).json(err));
}
module.exports = { createUser };
用户路线
const express = require("express");
const UserController = require("../controllers/users");
const router = express.Router();
router.post("/", UserController.createUser);
module.exports = router;
这是Sandbox project,我在这里“展示”正在发生的事情。
以防万一,我已将
Content-Type: application/json设置为标头,并在 Postman 上以原始 (JSON)、表单数据(密钥/对)、x-www-form-urlencoded(密钥对)的形式发送数据,但是一点也不看。我还没有尝试过简单的表格……但我猜错误就在那儿。
【问题讨论】:
-
你可以在邮递员中尝试一个新的请求,并尝试使用原始(json)选项吗?如果不起作用,您可以在邮递员中添加标题和正文的屏幕截图吗?
-
Maramal 我测试了你的 api,并在控制台中看到了 req.body。只需创建一个新的发布请求,选择 raw 和 JSON 选项。这将自动添加
Content-Type:application/json标头。 -
@SuleymanSah,确实有效...
-
@Dan,它有帮助,但我没有使用 body-parser,而是
express.json()。
标签: javascript node.js rest express mongoose