来自邮递员的Post请求似乎没有发送任何json数据

问题描述 投票:0回答:2

我正在尝试测试我的项目,我现在正在使用邮递员传递一些数据: 我已将邮递员设置为通过“body”“POST”到我的本地服务器,然后发送以下内容:

{
    "name": "My Name"
}

那么,我的服务器文件发布请求是:

const express = require('express'),
router        = express.Router(),
gravatar      = require('gravatar'),
bcrypt        = require('bcryptjs'),
{check, validationResult} = require('express-validator');

// User Model
const User = require('../../models/User');

// @route       GET api/users
// @description Test Route
// @access      Public
router.get('/', (req, res) => {
    res.send("User Route")
});

// @route       POST api/users
// @description Register User
// @access      Public
router.post('/', [
    check('name', 'Name is required').not().isEmpty(),
    check('email', 'Please enter a valid email address').isEmail(),
    check('password', 'Password must contain at least 6 characters').isLength({min: 6})
], async (req, res) => {
    return res.send(req.body);
});

module.exports = router;

在测试任何其他代码之前,我放入 res.send(req.body) 以确认任何内容都已发送到我的服务器,但是,res.send 仅返回: {} 意味着没有 json 信息已发送至我的服务器。我知道路由有效,因为当我输入 GET 请求时,它会按预期运行。我在这里缺少什么明显的东西吗?谢谢你。

node.js express postman
2个回答
2
投票

我已经找到了问题的答案。在“标题”中,我缺少“内容类型 - application/json”。添加后似乎有效。


0
投票

这个问题的原因是你需要使用Body Parser##


Body-Parser 用于处理表单数据或处理 API 请求中的 JSON 有效负载。例如,在构建 RESTful API 时,它确保客户端发送的数据被正确解析并准备好由后端逻辑处理。

解决方案: 你应该在主文件顶部声明 json() 函数,如index.js

const express = require('express');
const app = express();
app.use(express.json());  //the Solution

app.listen( 3000,()=>{
console.log("Server is Listening on Port 3000");

})

© www.soinside.com 2019 - 2024. All rights reserved.