gpt4 book ai didi

javascript - Node 路由器.delete 函数返回 404 Not Found?

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:42 25 4
gpt4 key购买 nike

我正在学习 Node/Angular,但遇到了问题。我正在测试使用 PostMan 向我的 API 发送 HTTP 请求,并在名为 api.js 的 Node 路由文件中处理 DELETE 请求

api.js

var User = require('../models/User');
var config = require('../../config');
var jwt = require('jsonwebtoken');
var bodyParser = require('body-parser');

module.exports = function(app, express) {

var apiRouter = express.Router();

apiRouter.use(function(req, res, next) {
//Validate users access token on each request to our API.

var token = req.body.token || req.params.token || req.headers['x-access-token'];

if (token) {
jwt.verify(token,config.tokenKey, function(err, decoded) {
if (err) {
return res.status(403).send({ success: false, message: 'Authorization required.'});
} else {
req.decoded = decoded;
next();
}
});
} else {
res.status(403).send({ success: false, message: 'No token provided.'});
next();
}

});

apiRouter.get('/users/me', function(req, res) {
return res.send(req.decoded);
});

apiRouter.post('/users/register', function(req, res) {


var user = new User;
user.name = req.body.name;
user.username = req.body.username;
user.password = req.body.password;

user.save(function(err) {
if (err) {
return res.send(err);
} else {
//User saved!
return res.json({ message: 'User created', id: user.id });
}

});

});

apiRouter.get('/users', function(req, res) {
User.find(function(err, users) {
return res.send(users);
});
});

//READ
apiRouter.get('/users/:user_id', function(req, res) {
User.findById(req.params.user_id, function(err, user) {
if (err) return res.send(err);
if (user) return res.send('Welcome ' + user.username);
if (!user) return res.send('Invalid User');
});
});

//UPDATE
apiRouter.put('users/:user_id', function(req, res) {

User.findById(req.params.user_id, function(err, user) {
if (err) res.send(err);
if (req.body.name) user.name = req.body.name;
if (req.body.username) user.username = req.body.username;
if (req.body.password) user.password = req.body.password;

user.save(function(err) {
if (err) return res.send(err);
return res.send('User updated');
});

});
});

//DELETE (not working???)
apiRouter.delete('users/:user_id', function(req, res) {

User.Remove({ id: req.params.user_id }, function(err) {
if (!err) {
return res.send('User deleted!');
} else {
return res.send('Error deleting user!');
}
});

});

return apiRouter;

};

当传入有效的用户 ID 时,我的 apiRouter.get 和 apiRouter.post 函数工作正常,但是使用 DELETE 发送请求不起作用,并且在测试时在 PostMan 中返回该请求

“无法删除/api/users/55b0dc599e94910c1d37ffa7”

此外,我还根据路由中间件的要求传递了一个有效的 token 。

有人知道为什么我的 DELETE 请求不起作用,但其他请求(例如获取单个用户)却工作得很好?

最佳答案

我认为您在 route 缺少参数:/:

apiRouter.delete('/users/:user_id', function(req, res) {

User.Remove({ id: req.params.user_id }, function(err) {
if (!err) {
return res.send('User deleted!');
} else {
return res.send('Error deleting user!');
}
});

});

关于javascript - Node 路由器.delete 函数返回 404 Not Found?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com