我知道您可以获取如下网址的查询字符串:
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
那么,即使存在嵌套的/,我如何才能将每个由/
分隔的值作为唯一的数组元素?
答案 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))