Я знаю, что вы можете получить строку запроса URL-адреса, например:
var url = require("url");
...
http.createServer((req,res) => console.info(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
Итак, как я могу получить каждое из значений, разделенных /, как уникальный элемент массива, даже если есть вложенные /?
@MichałSadowski О, круто, как мне это сделать? (а потом расшифровать?)
@MichałSadowski Я понял о encodeURIComponent и decodeUriComponent, но я понял, что это все еще не помогает мне: поскольку мне нужно разделить каждое значение по одному / за раз, как я могу разделить example.com/key/http://yahoo .com/key2/http://google.com (без пробелов)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, когда вы создаете 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))
Когда я запускаю encodeURIComponent в строке, подобной этому вопросу: (уберите пробел после "https"): encodeURIComponent("https://stackoverflow.com/questions/55138803/node-js-javascript-get-all-parts- of-url-parth-hierchy/55139317#55139317") он кодирует каждый "/" и вообще не различает их, попробуйте в консоли
@bluejayke, вот почему вам нужно запустить его перед составлением URL-адреса для каждой его части, а не для всего.
Как мне это сделать, пользователь - это тот, кто вводит URL-адрес в свой браузер, и я получаю его из request.url
Пользователи обычно не вводят URL напрямую, а получают его, например, по ссылкам; в противном случае вы бы никогда не узнали, какой ввод вы получите. Вам нужно решить это с точки зрения пользовательского интерфейса, но я уверен, что это будет сделано во время создания ссылки href.
Я хочу просто использовать URL как переменную
Вы все равно должны urlencode свои строки, так это будет
example.com/url/http%3A%2F%2Fgoogle.com