如何使用 Node JS Http/Https 模块获取 URL 参数

How to get URL Params with Node JS Http/Https module

我正在编写 Web 应用程序的后端程序。我正在执行 api 并且我需要能够在 URL 中发送数据。例如:

www.example.com/posts/123456789

现在我只有:

www.example.com/posts/?q=123456789

我想知道我是否可以做一些类似于 express 模块用冒号声明参数的事情。但我想用节点 http 模块来做,因为我已经用它编写了所有路由,移动到 express 并且必须记住它的功能将是一个巨大的痛苦。

如果这不可能,请告诉我,我将不得不坚持使用查询字符串。

如果我正确理解你的问题,你会做这样的事情。

我会给你完整的服务器代码,传过去运行 it.To你自己看看

例如,这段代码的作用是 -> localhost:8080/month?9 当您将其传递到浏览器时,控制台将打印出 9

const http = require('http');
const url = require('url');

http.createServer(function (req, res) {
  const queryObject = url.parse(req.url,true).query; <---- Here is where you "catch" the URI parameters
  console.log(queryObject); <-- here you display them

  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('Feel free to add query parameters to the end of the url');
}).listen(8080);

好像是 HTTP module docs do not specify a way to do this, other than by using search params.

然而,在你的情况下,我认为最好的行动方案(如果迁移到像 express 这样的框架不是一个选项)是手动解构 URL 使用类似的东西: const urlSegments = request.url.split('/') 并采取第 n 段(匹配您指定的路线)。

从长远来看,这是一个糟糕的解决方案,因为它很难维护,但如果有必要,它可以完成工作。