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

时间:2019-03-13 09:49:21

标签: javascript node.js

我知道您可以获取如下网址的查询字符串:

var url = require("url");

...

http.createServer((req,res) => console.log(url.parse(req.url).query))

但这仅在变量采用查询字符串格式的情况下:

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

等...

但是,如果我想以值的形式获取“变量”,而网址是以下格式的话:

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

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

1 个答案:

答案 0 :(得分:1)

首先,当您创建一个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))