【发布时间】:2013-12-04 00:14:31
【问题描述】:
我正在尝试使用 express.js 设置一个简单的 REST API。从客户端实现删除功能时遇到问题。
路线:
module.exports = function(server) {
server.get('/entries/:id', entries.get) // working
server.del('/entries/:id', entries.destroy)// not working
}
我有一个像这样设置的虚拟删除按钮(使用 handlebars.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>
当我单击按钮时,我得到“无法 POST /entries/1386113642”或我将 {{path}} 设置为的任何其他 url - 但是,相同 url 的 GET 请求工作正常。我还在我的快速配置文件中设置了 methodOverride() 。我在这里做错了什么?
编辑:这是我的整个 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)
})
}
【问题讨论】:
标签: javascript rest express