我正在學習Node/Angular,並且遇到問題。我使用的郵遞員HTTP請求發送到我的API測試,並正在處理,像這樣的刪除請求中的一個節點的路由文件名爲api.jsNode Router .delete函數返回404 Not Found?
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;
};
我apiRouter.get和傳遞一個有效的用戶ID時apiRouter.post功能工作正常,但發送使用DELETE請求沒有工作和當我測試郵遞員返回此
「無法刪除/ API /用戶/ 55b0dc599e94910c1d37ffa7」
另外,我正按照我的路由中間件的要求傳遞有效的令牌。
任何人都知道爲什麼我的DELETE請求無法正常工作,但其他人(如獲取單個用戶)工作正常嗎?
你'資本在Remove''User.Remove'。它應該是小寫字母。 – cdbajorin
你好,我已經做了更改並重新啓動了我的服務器,發生同樣的問題。 –
您是否嘗試在'apiRouter.delete()'的路徑中'users'之前的開頭添加'/'? – mscdex