2015-08-16 78 views
0

我正在學習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請求無法正常工作,但其他人(如獲取單個用戶)工作正常嗎?

+0

你'資本在Remove''User.Remove'。它應該是小寫字母。 – cdbajorin

+0

你好,我已經做了更改並重新啓動了我的服務器,發生同樣的問題。 –

+2

您是否嘗試在'apiRouter.delete()'的路徑中'users'之前的開頭添加'/'? – mscdex

回答

5

我認爲你缺少參數:在路線/

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

}); 
+0

是的,這是問題的感謝。有人在一小時前的上述評論中指出了這一點。 –