自从升级到Express 4.0(从3.0开始)以来,我的所有DELETE REST调用都没有进行身份验证,因为我注意到body params(存储access_token的地方)不能用于DELETE调用。
每当我使用GET / PUT /等时,这些参数都会完美无缺地通过。
如果有人知道为什么它不能用于DELETE通话,请告诉我。
THX, ORI
更新:
所以我想通了,因为我正在使用邮递员,删除是作为multipart提交的,因此,我需要添加一个特殊的“添加”,所以我添加了multer(app.use(multer());)但是,它仍然不起作用,这是我的代码:
var express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser'),
methodOverride = require('method-override'),
//session = require('express-session'),
multer = require('multer'),
mongoose = require('mongoose'),
passport = require('passport'),
// Create Application
app = express();
// configurate the app
app.use(require('stylus').middleware(path.join(__dirname, 'web')));
app.use(express.static(__dirname + '/web'));
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(multer());
app.use(methodOverride());
我的删除功能如下:
app.delete('/api/company/:id/email',auth.clientAuth(), auth.bearerAuth({scope:[1]}), company.deleteEmail);
“auth.clientAuth()”和“auth.bearerAuth({scope:[1]})”处理授权和权利。
同时,如何在快递4.0的新链接中拥有auth和权利的这个“链”?
答案 0 :(得分:0)
由于您没有显示您的代码,我相信您不会将param作为对象传递。这是一个删除示例,适用于express 4
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
var router = express.Router();
router.route('/users/:user_id')
.delete(function(req,res){
User.remove({_id: req.params.user_id},function(err, user){
if(err) res.json({message: err})
res.json({message: 'User removed from DB!'});
});
});