gpt4 book ai didi

javascript - Express 是否需要我使用 POST 路由删除?

转载 作者:行者123 更新时间:2023-11-29 21:03:28 24 4
gpt4 key购买 nike

以下代码在单击并确认按钮时成功删除了一条记录:

路由器(Express):

router.post('/meetings/delete/:slug', catchErrors(meetingController.deleteMeeting));

Controller :

exports.deleteMeeting = async (req, res) => {
const slug = req.params.slug;
const meeting = await Meeting.remove({ slug });
req.flash('success', 'meeting successfully deleted!');
res.redirect(`/meetings`);
};

查看模板(Pug/Jade):

form.delete-meeting-form(method='POST' action=`/meetings/delete/${meeting.slug}?_method=DELETE`)
input.button.button--delete(type='submit' value='DELETE MEETING' onclick='return confirm("Are you sure you want to delete this meeting? (Cannot be undone)")')

此代码按原样运行良好。但是,我似乎很奇怪我似乎需要使用 POST 路由才能完成我的 DELETE 请求。当我尝试使用 router.delete 来形成路由时,它不起作用。

我知道 HTML 不能很好地支持 DELETE 和 PUT/PATCH 请求,但为什么将我的 Express 路由命名为 delete 会出现问题?我做错了什么吗?

最佳答案

Delete will work fine with express.常规 HTML 表单不支持删除。如果您向应用程序添加删除路由,则可以使用 ajax(fetch、axios、jQuery 等)或 curl 测试删除方法:

curl -X "DELETE" http://foo/meetings/some-meeting

如果您希望能够通过delete 使用常规 HTML 表单,请查看 method-override middleware . custom logic部分展示了如何创建类似于 Rails 处理方法覆盖的覆盖。

关于javascript - Express 是否需要我使用 POST 路由删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45392062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com