【问题标题】:Using PUT to delete in Node.js在 Node.js 中使用 PUT 删除
【发布时间】:2016-10-09 08:01:29
【问题描述】:

node.js,我可以使用

app.route('/').get(getObjectList).post(postAddObject).put(putDeleteObject);

但我不知道如何在html中触发...put(putDeleteObject)

我们在html中是否仅限于postget?我什么时候可以使用put?是否仅适用于通过 jQuery 之类的 REST 请求?

您通常如何删除对象?我认为通过 post 请求而不是 get 请求更安全,但是像我在代码示例中那样链接它会很棒,但是,如果 html 无法区分 post 和 put 可能是不可能的.我看过一些他们使用的例子

<form method="post">
  <input type='hidden' name='_method' value='put'>
  <button type='submit'>Delete</button>
</form>

但它对我不起作用。

编辑

我的意思是使用DELETE 而不是PUT,但问题保持不变。我不知道如何更改我的 html 以支持 DELETE 请求。

【问题讨论】:

  • 要支持 PUT 和 DELETE 动词,您可以使用 method-override 中间件。旁注:没有什么可以阻止您使用 PUT 删除,但它不遵循标准,即 GET 用于检索,POST 用于添加,PUT 用于更新,DELETE 用于删除。
  • 对不起。我的错。我的意思是使用delete 删除请求。但是如何更改我的 html 以使用它呢?
  • 阅读:Should PUT and DELETE be used in forms? 结论:使用 AJAX
  • 如果您使用的是方法覆盖中间件,请按照他们的示例进行操作。
  • @mortensen my post below 回答您的问题了吗?如果是这样,那么您可以考虑accepting the answer,因为现在其他搜索此问题的人看到您的问题没有好的答案并且可能不会阅读。如果它没有回答您的问题,请评论缺少的内容。我正在浏览我的旧答案,我想确保它们是好的或需要改进。谢谢。

标签: javascript node.js forms post put


【解决方案1】:

您没有在问题中包含它,但看起来您使用的是 Express。在这种情况下,您可以使用:

var methodOverride = require('method-override')
app.use(methodOverride('_method'))

然后你就可以使用这样的 HTML 表单了:

<form method="POST" action="/your/resource?_method=DELETE">
  <button type="submit">Delete</button>
</form>

这在你的路由处理程序中:

app.route('/')
  .get(getObjectList)
  .post(postAddObject)
  .put(putObject)
  .delete(deleteObject);

如果你想使用:

<form method="POST">
  <input type="hidden" name="_method" value="delete">
  <button type="submit">Delete</button>
</form>

然后它有点复杂但仍然可能 - 欲了解更多信息,请参阅:

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2014-01-14
    • 2021-12-28
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多