表单 DELETE 方法在 EXPRESS JS 中重定向到 GET 方法

开发商Lewis

我在这里有一个表格,其中使用了删除方法:

<form action="/article/<%= articles[i]._id %>" method="DELETE"><button class="btn btn-danger" type="submit">Delete</button></form>

然后我的文章 ID 的路线如下所示:

const articleById = require('../controllers/article/articleById')
router.get('/:id', articleById)

const deleteArticleById = require('../controllers/article/deleteArticleById')
router.delete('/:id', authLoggedIn, deleteArticleById)

该表单应该使用 router.delete 及其控制器,但它使用的是 router.get 并使用该控制器。我通过在每个控制器中使用 console.log 验证了这一点,当我提交该表单时,它会将我发送到 router.get。我不确定如何让表单使用 router.delete。

阿布舍克

HTML 表单不支持 PUT、PATCH、DELETE 方法。表单仅支持 GET 和 POST 方法。这就是为什么 method="DELETE" 不起作用,而是调用 GET。

但是您可以使用方法覆盖包覆盖此行为。http://expressjs.com/en/resources/middleware/method-override.html

var express = require('express')
var methodOverride = require('method-override')
var app = express()

// override with POST having ?_method=DELETE
app.use(methodOverride('_method'))
<!-- HTML Form using DELETE -->
<form method="POST" action="/resource?_method=DELETE">
  <button type="submit">Delete</button>
</form>

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章