我试图使用Nodejs和Express4实现内存中的REST API。使用ExpressJS和Nodejs构建REST API - POST和PUT操作问题
我没有问题列出用户和通过id获取用户。但是,我在POST操作中遇到了麻烦。
编辑:正如评论中所建议的那样,我现在使用req.body传递请求中接收到的JSON数据,但将“null”添加到我的数组中,而不是JSON数据。我不确定这是否是我的代码中的问题,或者是由于我使用Postman的方式。
下面是我如何使用邮差发送数据** (我已删除的最后一个值后的逗号:)**:
下面是我的代码:
user.js的
var users = [{"id": "1", "firstName": "John", "lastName": "Doe"}];
exports.getAllUser = function() {
return users;
};
exports.getUserById = function(id) {
for (var i = 0; i < users.length; i++) {
if (users[i].id == id) return users[i];
}
};
exports.deleteUser = function(id) {
for (var i = 0; i < users.length; i++) {
if (users[i].id == id) {
users.splice(i,1);
}
}
}
exports.updateUser = function(id, json) {
for (var i = 0; i < users.length; i++) {
if (users[i].id == id) {
users.splice(i, 1, json);
}
}
}
exports.addUser = function(json) {
users.push(json);
}
server.js
var express = require('express');
var users = require('./user');
var app = express();
var port = process.env.PORT || 8080;
var router = express.Router();
router.use(function(req, res, next) {
console.log('%s %s', req.method, req.path);
next();
});
router.get('/users', function(req, res, next) {
res.json({ users: users.getAllUser() });
});
router.get('/users/:id', function(req, res, next) {
var user = users.getUserById(req.params.id)
res.json(user);
});
router.put('/users/:id', function(req, res, next) {
users.updateUser(req.params.id, req.body);
});
router.delete('/users/:id', function(req, res, next) {
users.deleteUser(req.params.id);
});
router.post('/users', function(req, res, next) {
users.addUser(req.body);
});
// Only requests to /api/ will be send to router.
app.use('/api', router);
app.listen(port);
console.log('Server listening on port ' + port);
关于POST,我该如何将JSON从请求传递到数组?我想这个问题的答案也可以帮助我执行PUT(更新)。我会有2个参数,一个是ID,另一个是JSON数据?
此外,如何测试Postman邮政?我在哪里指定要发送的JSON?
由于它是一个POST,我假设json负载进入http请求的主体,你有没有看过使用body-parser来检索数据? – ckross01 2014-09-25 20:25:05
'req.body'应该包含您发布到服务器的对象。 – 2014-09-25 20:26:10
@DavinTryon - 我已更新我的代码以反映您建议的更改,使用req.body传递正在发送的json数据。但是,“null”被添加到数组中。 – dukable 2014-09-25 20:37:51