【问题标题】:Express Request body is empty [duplicate]快递请求正文为空[重复]
【发布时间】: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


【解决方案1】:

在 index.js 上添加这个

var bodyParser = require('body-parser')
app.use(bodyParser.json())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 2020-04-17
    • 2021-08-02
    • 2023-02-26
    • 1970-01-01
    • 2019-04-12
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多