0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>При работе с http возникает потребность в библиотеках, позволяющих манипулировать частями адресов, разбирать их, а также собирать обратно. Node.js предоставляет такие модули из коробки.</p>
1
<p>При работе с http возникает потребность в библиотеках, позволяющих манипулировать частями адресов, разбирать их, а также собирать обратно. Node.js предоставляет такие модули из коробки.</p>
2
<h2>Url</h2>
2
<h2>Url</h2>
3
<p>Это модуль, основной задачей которого является парсинг строчки адреса для извлечения составных частей.</p>
3
<p>Это модуль, основной задачей которого является парсинг строчки адреса для извлечения составных частей.</p>
4
<p>То же самое можно визуализировать:</p>
4
<p>То же самое можно визуализировать:</p>
5
<p>┌─────────────────────────────────────────────────────────────────────────────┐ │ href │ ├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤ │ protocol ││ auth │ host │ path │ hash │ │ ││ ├──────────┬──────┼──────────┬────────────────┤ │ │ ││ │ hostname │ port │ pathname │ search │ │ │ ││ │ │ │ ├─┬──────────────┤ │ │ ││ │ │ │ │ │ query │ │ " http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash " │ ││ │ │ │ │ │ │ │ └──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘ (all spaces in the "" line should be ignored -- they're purely for formatting)</p>
5
<p>┌─────────────────────────────────────────────────────────────────────────────┐ │ href │ ├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤ │ protocol ││ auth │ host │ path │ hash │ │ ││ ├──────────┬──────┼──────────┬────────────────┤ │ │ ││ │ hostname │ port │ pathname │ search │ │ │ ││ │ │ │ ├─┬──────────────┤ │ │ ││ │ │ │ │ │ query │ │ " http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash " │ ││ │ │ │ │ │ │ │ └──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘ (all spaces in the "" line should be ignored -- they're purely for formatting)</p>
6
<p>Как видно, этот модуль дал нам возможность извлечь query params из адреса, но в виде строки. Дальше, как вы уже догадались, нам понадобится еще один модуль - querystring.</p>
6
<p>Как видно, этот модуль дал нам возможность извлечь query params из адреса, но в виде строки. Дальше, как вы уже догадались, нам понадобится еще один модуль - querystring.</p>
7
<h2>Querystring</h2>
7
<h2>Querystring</h2>
8
<p>Он также входит в поставку Node.js и работает очень просто:</p>
8
<p>Он также входит в поставку Node.js и работает очень просто:</p>
9
<p>Здесь необходимо сделать пояснение. Спецификация http разрешает использовать в адресах только те символы, которые входят в ASCII character-set. Возникает вопрос: как быть, если у нас есть другие символы? А для этого применяется специальное кодирование, называемое url encoding. Например, слово скрипт будет закодировано в строку: %D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82.</p>
9
<p>Здесь необходимо сделать пояснение. Спецификация http разрешает использовать в адресах только те символы, которые входят в ASCII character-set. Возникает вопрос: как быть, если у нас есть другие символы? А для этого применяется специальное кодирование, называемое url encoding. Например, слово скрипт будет закодировано в строку: %D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82.</p>
10
<p>Модуль querystring делает кодирование/декодирование автоматически, это видно в примере выше. Но если вам вдруг понадобилось делать это руками, то js спешит на помощь:</p>
10
<p>Модуль querystring делает кодирование/декодирование автоматически, это видно в примере выше. Но если вам вдруг понадобилось делать это руками, то js спешит на помощь:</p>
11
<p>А теперь собираем все вместе:</p>
11
<p>А теперь собираем все вместе:</p>
12
<p>Кроме ручного превращения строки в объект через querystring можно воспользоваться классом URLSearchParams:</p>
12
<p>Кроме ручного превращения строки в объект через querystring можно воспользоваться классом URLSearchParams:</p>
13
<p>Обратная задача - конструирование адреса выполняется через создание объекта URL и его наполнение:</p>
13
<p>Обратная задача - конструирование адреса выполняется через создание объекта URL и его наполнение:</p>
14
<p>Для более полного понимания работы этих объектов и методов нужно смотреть в документацию и экспериментировать.</p>
14
<p>Для более полного понимания работы этих объектов и методов нужно смотреть в документацию и экспериментировать.</p>