Node.js HTTP GET请求参数

7
我希望能够处理这样的HTTP请求:
GET http://1.2.3.4/status?userID=1234

但我无法从中提取出参数userID。我正在使用Express,但它并没有帮助我。例如,当我写下像下面这样的东西时,它不起作用:

app.get('/status?userID=1234', function(req, res) {
  // ...
})

我希望能够在任何本地参数中使用值1234,例如user=userID。我该如何实现这一点?


特别是在这个页面上:https://dev59.com/_Ww05IYBdhLWcg3w9mnd#6913287,这是最适合您需求的答案。 - WiredPrairie
此外,如果您不知道值可能在哪里,您可以使用 req.param("userID"),但是 req.query.userID 就足够了。 - WiredPrairie
1个回答

21

您只需使用原生模块解析请求URL即可。

var url = require('url');
app.get('/status', function(req, res) {
  var parts = url.parse(req.url, true);
  var query = parts.query;
})
你会得到类似这样的东西:
query: { userID: '1234' }

编辑:由于您使用的是Express,查询字符串将被自动解析。

req.query.userID
// returns 1234

抱歉,也许我不理解它的实际工作方式,但如果我有这段代码:var url = require('url'); app.get('/status', function(req, res) { var url = url.parse(request.url, true); var query = url.query; res.send("response: "+query.useriD); }); 并发送请求get http://1.2.3.4/status?userID=1234我收到的答案是 "error": "request is not defined" - Alex Cebotari
Express有许多其他选项,不需要另一个模块(请参见重复答案)。 - WiredPrairie
将请求中的 request.url 更改为 req.url 后,服务器返回以下错误信息:"error": "无法调用未定义的 'parse' 方法"。 - Alex Cebotari
@AlexCebotari - 看看在你的问题评论中建议的重复帖子。还有我的其他评论。你不需要使用 parse - WiredPrairie
抱歉,错误是由于我匆忙赶去学校时重新分配了URL变量所致。谢谢@WiredPrairie指出Express已经解析查询字符串,我忘记了。 - hexacyanide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接