节点路由器.delete函数返回404找不到?

约翰·威克

我正在学习Node / Angular并遇到问题。我正在测试使用PostMan向我的API发送HTTP请求,并像在名为api.js的节点路由文件中那样处理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”

另外,我按照路由中间件的要求传递了有效的令牌。

有人知道为什么我的DELETE请求不起作用,而其他请求(例如获得一个用户)却正常吗?

尼特什·辛格

我认为您/在路线中缺少参数

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!');
        }
    });

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

节点路由器.delete函数返回404找不到?

来自分类Dev

找不到快递路由器

来自分类Dev

路由器找不到组件

来自分类Dev

注册的路由器 url 返回 404

来自分类Dev

Symfony和React路由器,找不到路由

来自分类Dev

找不到htaccess路由返回404

来自分类Dev

AngularJS UI路由器处理404

来自分类Dev

Angular 路由器出现 404 错误?

来自分类Dev

在路由器上找不到反射信息

来自分类Dev

更改频道后找不到路由器

来自分类Dev

柯达ESP 5250找不到路由器

来自分类Dev

Durandal Child路由器找不到视图

来自分类Dev

Angular 2找不到默认路由器

来自分类Dev

找不到 Angular 2 的命名路由器插座?

来自分类Dev

Meteor + Angular2 - 找不到名称“路由器”

来自分类Dev

反应路由器循环并返回

来自分类Dev

如何从路由器模板调用函数?

来自分类Dev

Angular2 - 找不到名称 - 构造函数、公共、路由器

来自分类Dev

再次访问网址时,Vue路由器返回404

来自分类Dev

Express.js 路由器发布请求返回 404

来自分类Dev

路由器函数的返回类型是什么?

来自分类Dev

返回路由器链接在路由器中抛出错误?

来自分类Dev

AngularJS / UI路由器:解析时处理404

来自分类Dev

Angular 2新路由器-检测404

来自分类Dev

盖茨比/到达路由器404,但页面呈现

来自分类Dev

无法发布到Express路由器(404错误)

来自分类Dev

Angular 2新路由器-检测404

来自分类Dev

Asp.Net中的HttpClient响应返回404(找不到:找不到控制器)

来自分类Dev

铁路由器不等待meteor.user()返回