为什么nodejs express post请求中的“body”为空?

时间:2021-06-03 10:56:24

标签: node.js json express request postman

我正在尝试在 Postman 发送的正文中捕获原始数据。这是原始数据:

{
    "hello": "world"
}

我在服务器中使用 app.use(express.json())。当我发送 post 请求时,我只得到一个空的 JSON。为什么会发生这种情况?

App.js 代码:

import express from "express"
import { connectDb } from "./connectDb.js"
import create from "./routes/create.js" // router

const app = express()
app.use(express.json())

connectDb()

const PORT = process.env.PORT || 5000

app.use("/api", create)

app.listen(PORT, () => console.log(PORT, "Connected..."))

路由器代码:

import express from "express"
import Game from "../models/gamesModel.js" // mongoose model
const router = express.Router()

router.route("/create/game").post(async (req, res) => {
  console.log(req.body)
  try {
    const game = await Game.create(req.body)
    res.json(game)
  } catch (error) {
    res.json({ message: "Invalid Information" })
  }
})

2 个答案:

答案 0 :(得分:1)

当您使用内置 req.body 中间件时,您使用 POSTMAN 能够通过 express.json 访问请求正文,因此您必须确保使用 RAW 发送请求正文键入并将正文的类型设置为 JSON,如下图所示

enter image description here

如果正文类型设置为其他内容(文本、JavScript、HTML、XML),您仍然会得到一个空正文。只有当它设置为 JSON 时,您才会得到 req.body 填充的数据,这些数据是作为请求正文的一部分发送的

答案 1 :(得分:1)

在您的标题中更正这一点:

content-type: application/json