所以,假设我在我的ejs文件中有这个链接:
<a href="/user/12">Delete</a>
在我的路线文件中,我删除了以下代码:
router.delete( '/user/:id', function ( req, res ) {
// delete operation stuff
});
所以我的问题是,我如何覆盖GET
请求从链接到DELETE
方法,以确保我的router.delete
路由能够处理它。现在,它仅将请求检测为GET
。我使用这个Method Override模块来处理它,但似乎所有的例子都使用了表单元素,而不是锚定方式。任何人吗?
答案 0 :(得分:6)
无论如何,现在这里是用于在发出应用程序请求之前使用GET
覆盖middleware
请求的解决方案,到目前为止链接我将href
更改为这个:
<a href="/user/12?_method=DELETE" >Delete</a>
在途中:
router.use( function( req, res, next ) {
// this middleware will call for each requested
// and we checked for the requested query properties
// if _method was existed
// then we know, clients need to call DELETE request instead
if ( req.query._method == 'DELETE' ) {
// change the original METHOD
// into DELETE method
req.method = 'DELETE';
// and set requested url to /user/12
req.url = req.path;
}
next();
});
最后,请求的路径将匹配此路由:
router.delete( '/user/:id', function ( req, res ) {
// delete operation stuff
});
任何遇到此问题的人都可以尝试一下,如果有人遇到这些问题并且能够通过很好的解决方案解决它,请告诉我。快乐的编码!