[英]Why Post Request Body is Empty? Node
我正在使用 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":{ "name": "mohit", "password": "password4", "professional": "teacher", "id": 4 }'
其中说 curl: (52) 来自服务器的空回复。
同样在另一边 req.body 总是空的。 请帮我解决这个问题。
另外,如果有任何有效的操作方法,请告诉我。
对于 adduser 我想将请求提供的数据添加到 users.json 文件对于 deleteuser 我想从请求中删除 id 匹配的用户。
谢谢。 ✌️
你需要解析身体。 尝试添加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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.