Node.js 如何在express和node中从html表单发送put请求

Node.js 如何在express和node中从html表单发送put请求,node.js,express,Node.js,Express,我有一个用于编辑对象的表单,我想使用带有node.js的express 3.x正确处理它 编辑项目路径:/item/edit显示用于编辑对象的表单 我想我有三个选择: 1) 放置一个值为“edit”的隐藏字段,以便我可以在express中正确处理它 这需要更多的工作,因为我必须在app.post('/item',routes.item.post)中处理它也将处理新创建和更新 2) 仅使用jQuery.ajax()put调用提交编辑表单。 这允许我使用app.put('/item',routes.

我有一个用于编辑对象的表单,我想使用带有node.js的express 3.x正确处理它

编辑项目路径:
/item/edit
显示用于编辑对象的表单

我想我有三个选择:

1) 放置一个值为“edit”的隐藏字段,以便我可以在express中正确处理它 这需要更多的工作,因为我必须在app.post('/item',routes.item.post)中处理它也将处理新创建和更新

2) 仅使用jQuery.ajax()put调用提交编辑表单。 这允许我使用app.put('/item',routes.item.put)

3) 向/item/edit而不是/item发送post请求以处理更新/编辑 post将仅用于更新/item/edit:
app.post('/item/edit',routes.item.edit.post)

当查看app.js中的代码时,解决方案#2是唯一直观和明显的,并且遵循CRUD的标准约定。但是,如果由于某种原因没有启用javascript,它们将无法编辑其对象。

快递:

app.use(express.bodyParser())
app.use(express.methodOverride())
您的html表单:

<form method="POST">
  <input type="hidden" name="_method" value="put">
</form>

对于最近遇到此问题的任何人,这里是适用于我的更新语法。当你读到这篇文章的时候可能会有所不同,所以如果这不起作用,就检查一下。但是使用
方法覆盖2.3.10
express4.13.4
时,以下应该可以工作

<form method="POST" action="/edit-post/<post.id>?_method=PUT">
   .....
  <button type="submit">Update Post</button>
</form>

.....
更新帖子

我认为这不再有效,请检查API文档:。我想您需要将操作指定为
/endpoint?\u method=put