【问题标题】:Why Post Request Body is Empty? Node为什么发布请求正文为空?节点
【发布时间】:2020-06-15 11:43:05
【问题描述】:

我正在使用 nodejs 中的 express 创建添加用户和删除用户功能。我有用于存储所有用户的 users.json 文件。考虑下面的代码。

var express = require('express');
var app = express();
var fs = require("fs");

//list users 
app.get('/listUsers', function(req, res) {
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function(err, data) {
        console.log('List users ');
        res.send(data);
    });
})

//add user
app.post('/addUser', function(req, res) {
    // First read existing users.
    console.log('adding a new user');

    console.log(req.body);
    // fs.readFile(__dirname + "/" + "users.json", 'utf8', function(err, data) {
    //     data = JSON.parse(data);
    //     new_ = req.body;
    //     console.log(new_);
    //     // data["user4"] = new_["user"];
    //     // console.log(data);
    //     console.log('adding a new user')
    //     res.send(JSON.stringify(data));
    // });
})

//show user
app.get('/:id', function(req, res) {
    // First read existing users.
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function(err, data) {
        var users = JSON.parse(data);
        console.log('show user ')
        var user = users["user" + req.params.id]
            // console.log(user);

        res.send(JSON.stringify(user));
    });
})

//delete user
app.delete('/deleteUser', function(req, res) {
    // First read existing users.
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function(err, data) {
        data = JSON.parse(data);
        delete data["user" + req.params.id];
        console.log('deleting a user ');
        // console.log(data);
        res.send('user deleted');
    });
})


var server = app.listen(8081, function() {
    var host = server.address().address
    var port = server.address().port
    console.log("Example app listening at http://%s:%s", host, port)
})

我正在使用 curl 进行测试。

curl localhost:8081/adduser --data '{"user":{ “名称”:“莫希特”, “密码”:“密码4”, “职业”:“老师”, “身份证”:4 }'

上面写着 curl: (52) Empty reply from server 。

另一方面,req.body 始终为空。请帮我解决这个问题。

另外,如果有任何有效的操作方法,请告诉我。

对于 adduser 我想将请求提供的数据添加到 users.json 文件 对于 deleteuser 我想从请求中删除 id 匹配的用户。

谢谢。 ✌️

【问题讨论】:

  • 改用curl localhost:8081/addUser …(大写U)。也可以使用--data-raw-H "Content-Type: application/json"

标签: javascript node.js express


【解决方案1】:

您需要解析正文。 尝试添加app.use(express.json())

var express = require('express');
var app = express();
var fs = require("fs");

app.use(express.json());

如果您使用低于 4.16 的旧 express 版本,请使用正文解析器

安装它:

npm i body-parser

使用它:

var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require("body-parser");

app.use(bodyParser.json());

【讨论】:

  • 如何添加和删除新用户?你能告诉 ?我应该使用 fs.appendFile
  • 我不知道这个应用程序的上下文
  • 它很简单,它有一个名为 users.json 的文件,当我调用 adduser 时,它会将所有数据放入 users.json 文件中,deleteuser 删除请求中指定 id id 的用户
猜你喜欢
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多