捕获Node.js中的GET请求参数

时间:2016-12-18 09:30:10

标签: node.js

我正在尝试捕获当前的GET URL并在node.js代码中查询params。我认为windows.loication在node.js中不起作用,因为它仅用于基于客户端的执行。我尝试过多种方法,但无法捕获GET请求。这就是我所尝试的一切。

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

var request = require('request');
var query = url.parse(request.url,true).query;

getFormattedUrl(req);
function getFormattedUrl(req) {
    console.log("req.url: " + req.url);
    return url.format({
        protocol: req.protocol,
        host: req.get('host')
    });
}

所有这些都失败了,给出了错误:

2016-12-17T03:32:36.164600+00:00 app[web.1]: ReferenceError: request is not defined

2016-12-17T03:43:46.569603+00:00 app[web.1]: ReferenceError: request is not defined

2016-12-17T03:45:14.509168+00:00 app[web.1]: TypeError: Parameter 'url' must be a string, not undefined

有人可以建议如何在node.js中创建GET参数。

4 个答案:

答案 0 :(得分:0)

如果您尝试将从NODE JS服务器发出的请求捕获到另一个http / https端点以进行调试或查看,这可能会有所帮助

Y

其中options2是节点js服务器尝试访问的定义的URL

当您控制日志选项2(我使用的变量名称,您可以调用它)时,它将为您提供有关服务器正在进行的HTTPS / HTTP调用的所有信息。

答案 1 :(得分:0)

要解决上述问题,请先使用命令行安装request模块,然后再使用它:

npm install request 

有趣的是,要实现您的需求,您根本不需要使用请求模块。只需像上面那样使用url模块,传递请求对象(不是模块,而是实际的调用请求),并使用url.format

格式化它
const url = require('url')
function getFormattedUrl(req) { return url.format(req.url) }

答案 2 :(得分:0)

如果您使用express 4.x,则需要req.query

答案 3 :(得分:0)

示例Express JS 4代码

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Someting')
  console.log(req.query);
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

这将在端口3000上启动localhost服务器

如果你做localhost:3000?q = test你会看到

{q: test}
控制台/日志中的