Node.js/JavaScript:获取URL路径层次结构的所有部分

Node.js/JavaScript:获取URL路径层次结构的所有部分,javascript,node.js,Javascript,Node.js,我知道您可以获得URL的查询字符串,如: var url = require("url"); ... http.createServer((req,res) => console.log(url.parse(req.url).query)) 但这仅限于变量采用查询字符串格式时: example.com/index.html?key=val&key2=val2 等等 但是,如果我想要以值的形式获取变量,如果url的格式是: example.com/key/val/key2/v

我知道您可以获得URL的查询字符串,如:

var url = require("url");

...

http.createServer((req,res) => console.log(url.parse(req.url).query))
但这仅限于变量采用查询字符串格式时:

example.com/index.html?key=val&key2=val2
等等

但是,如果我想要以值的形式获取变量,如果url的格式是:

example.com/key/val/key2/val2
?

我可以将数组拆分为/,然后相应地映射它:

var pathParts = request.url.split("/").filter(x => x.length > 0).map(x => x.split("%20").join(" "));
但对于这样的URL,这将失败:

example.com/url/http://google.com

因此,即使存在嵌套的/,我如何才能获得由/分隔的每个值作为唯一数组元素?

首先,当您创建url时,您需要使用encodeURIComponent对其每个部分进行编码。这样,您将获得一个url,例如:example.com/url1/http%3A%2F%2Fgoogle.com/url2/http%3A%2F%2Fbing.com。然后将其读回就像使用以下命令一样简单:

let requestArray = request.url.split("/")
let requestDecodedArray = requestArray.map((el)=>decodeURIComponent(el))

无论如何,您都应该对字符串进行url编码,这样可以使用example.com/url/http%3A%2F%2Fgoogle。com@MichałSadowski噢,酷,我该怎么做?然后解码?@MichałSadowski我意识到了encodeURIComponent和decodeUriComponent,但我意识到这对我仍然没有帮助:因为我需要一次一个地分离每个值,当我在一个字符串上运行encodeURIComponent时,如何在没有空格的情况下分离example.com/key/http://yahoo.com/key2/http://google.com当我在一个字符串上运行encodeURIComponent时,像这样的问题:在https:encodeURIComponent https://stackoverflow.com/questions/55138803/node-js-javascript-get-all-parts-url-parth-hierchy/551393175513917之后去掉空格,它对每个/和进行编码根本无法区分它们,请在console@bluejayke这就是为什么在创建url之前,您需要在url的每个部分上运行它,而不是在整个url上运行它。我应该怎么做,用户是将url输入到浏览器的人,我从请求中获取url。url用户通常不直接输入url,而是获取url,例如,从链接;否则你永远不会知道你会得到什么样的输入。你需要从用户界面的角度来解决这个问题,但我打赌这会在link href编写过程中完成。我只想将URL用作变量