【问题标题】:Express.js get http method in controllerExpress.js 在控制器中获取 http 方法
【发布时间】:2012-06-25 10:56:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: http node.js express


    【解决方案1】:

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

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

    ?_method=XXXXX

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

    流程是客户端发送一个带有数据的POST请求到你的服务器端,中间件翻译请求并运行相应的“app.put...”路由。

    我认为这是一种妥协的方式。欲了解更多信息:method-override

    【讨论】:

      【解决方案2】:

      答案很简单

      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

      【讨论】:

      • 对。可惜express.js文档在这里expressjs.com/api.html#req.params漏掉了这些东西,也没有参考NodeJS内置库的文档,确实有必要。
      • 您好,感谢您发布此解决方案。不过,对我来说,为了使您在此处列出的逻辑正常工作,我必须以这种方式制作我的 IF 语句:if (req.method != 'GET')
      • 比较字符串时最好使用三等号而不是双等号
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多