2016-01-21 58 views
3

所以的NodeJS为DELETE,假设我在我的EJS文件链接:覆盖GET方法,使用锚标记

<a href="/user/12">Delete</a> 

而在我的路由文件,我已经删除代码类似以下内容:

router.delete('/user/:id', function (req, res) { 
    // delete operation stuff 
}); 

所以我的问题是,我怎么可以覆盖GET请求链接到DELETE方法,以确保我的router.delete路线能够处理它。目前,它只能检测到请求为GET。我使用这个Method Override模块来处理它,但似乎所有的例子都是使用form元素,而不是锚点的方式。任何人?

回答

5

不管怎么说,现在这里是我以前使用middleware作出申请请求之前重写GET要求的解决方案,到目前为止的链接我改变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 
}); 

任何遇到此问题的人都可以尝试一下,如果有人遇到这个问题并且能够用极好的解决方案解决问题,请告诉我。快乐编码!

+1

你先生让我的早晨不那么沮丧。谢谢! – jeremytripp