Express.js在控制器中获取http方法

时间:2012-06-23 08:47:06

标签: http node.js express

我正在建立一个注册表格(护照本地作为身份验证,表格作为表格助手)。

因为注册只知道GET和POST我想在一个函数中完成整个处理。

换句话说,我正在寻找类似的东西:

exports.register = function(req, res){
    if (req.isPost) {
       // do form handling
    }
    res.render('user/registration.html.swig', { form: form.toHTML() });
};

2 个答案:

答案 0 :(得分:87)

答案很简单

exports.register = function(req, res) {
    if (req.method == "POST") {
       // do form handling
    }
    res.render('user/registration.html.swig', { form: form.toHTML() });
};

但是我在快速指南中搜索了这种方法很长一段时间。

最后,节点文档包含如下详细信息: http://nodejs.org/api/http.html#http_http_request_options_callback

答案 1 :(得分:0)

现在你可以在npm =>中使用包了。 “method-override”,它提供了一个覆盖“req.method”属性的中间件层。

基本上,您的客户端可以使用修改后的“req.method”发送POST请求,例如/registration/passportID?_method=PUT

  

?_方法= XXXXX

部分用于中间件识别这是一个秘密的PUT请求。

流程是客户端将带有数据的POST req发送到服务器端,中间件转换req并运行相应的“app.put ...”路由。

我认为这是妥协的一种方式。有关详细信息:method-override