Express.js 在控制器中获取 http 方法
Posted
技术标签:
【中文标题】Express.js 在控制器中获取 http 方法【英文标题】:Express.js get http method in controller 【发布时间】: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() );
;
【问题讨论】:
【参考方案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')
比较字符串时最好使用三等号而不是双等号以上是关于Express.js 在控制器中获取 http 方法的主要内容,如果未能解决你的问题,请参考以下文章
每次在 Node.js (Express.js) 中发出 API 请求之前,如何简化 Fetching Auth token?
为啥我不能在 Socket.io http 服务器上使用 express.js 获取方法
如何避免在 express.js auth 中间件中捕获 HTTP OPTIONS 请求