快递中的客户端 DEL 请求.js

client-side DEL request in express.js

本文关键字:请求 js DEL 客户端 快递      更新时间:2024-03-14

我正在尝试使用 express.js 设置一个简单的 REST API。 从客户端实现删除功能时遇到问题。

路线:

module.exports = function(server) { 
  server.get('/entries/:id', entries.get)    // working
  server.del('/entries/:id', entries.destroy)// not working
}

我有一个虚拟的删除按钮设置如下(使用车把.js(:

<form id='deleteform' action={{path}} method='POST'>
  <input type='hidden' name='_method' value='DEL' />
  <input type='hidden'  name='_csrf' value={{csrf_token}} />
  <button class='submit' type='submit' name='DELETE'>
</form>

当我单击该按钮时,我得到"无法发布/条目/1386113642"或我将{{path}}设置为的任何其他URL - 但是,对同一URL的GET请求工作正常。 我还在我的快速配置文件中设置了方法覆盖((。 我在这里做错了什么?

编辑:这是我的整个app.configure((调用:

    app.configure(function() {
        app.use(function(req, res, next) {
            res.locals.pkg = pkg
            next()  
        })
    app.use(express.favicon())
    var rootPath = path.normalize(__dirname + '/..')
    var basePath = path.normalize(__dirname + '/../..')
    app.use(express.static(rootPath + '/public'))
    app.use(express.static(basePath + '/backbone/'))
    app.set('views', __dirname + '/../../static')
    app.engine('hbs', exphbs({
       defaultLayout: 'main',
       extname: '.hbs',
       partialsDir: '../static',
       layoutsDir: '../static/layouts'
    }))
    app.set('view engine', '.hbs')
        app.use(express.cookieParser())
        app.use(express.bodyParser())
        app.use(express.methodOverride())
        app.use(express.session({
            secret: 'aekugwieufgkdjfhaisuefhwijfeijf',
            store:  new RedisStore({host:'localhost', port: 6379, client: redis })
        }))
    app.use(function(req, res, next) {
      res.locals.csrf_token = req.session._csrf
      next()
    })
        if (process.env.NODE_ENV !== 'test') {
                app.use(express.csrf())
            }
    app.use(app.router) 
  })
}

>DEL应该DELETE

<input type='hidden' name='_method' value='DELETE' />

我还在我的快速配置文件中设置了方法覆盖((

发布此代码。它不是配置文件。它是对中间件函数的顺序高度敏感的代码。特别是,确保bodyParser先于methodOverride先于app.router