logo

Кодирование URL в Node.js без использования доп. модулей

Быстрый ответ

Встроенная в JavaScript функция encodeURIComponent является эффективным инструментом для URL-кодирования в Node.js. Она преобразует специальные символы в их соответствующие URL-безопасные аналоги:

JS
Скопировать код
const encodedPhrase = encodeURIComponent('Say hi!');
console.log(encodedPhrase); // 'Say%20hi%21'

Таким образом, специальные символы, включая пробелы и знаки препинания, преобразуются для безопасной передачи через сеть!

Выбираем подходящий способ кодирования

В зависимости от поставленной задачи выбираются разные методы кодирования.

Использование encodeURIComponent для кодирования параметров данных

Функция encodeURIComponent эффективно решает задачи по кодированию большинства символов:

JS
Скопировать код
console.log(encodeURIComponent('&, =, #, ?, %')); // %26%2C%20%3D%2C%20%23%2C%20%3F%2C%20%25

Использование encodeURI для кодирования полного URL

encodeURI полезен при кодировании всего URL, внимательно обрабатывая зарезервированные символы:

JS
Скопировать код
const url = encodeURI('http://example.com?name=John Doe&job=developer');
console.log(url); // http://example.com?name=John%20Doe&job=developer

Использование querystring.escape для кодирования, специфичного для Node.js

Метод escape из модуля querystring в Node.js предназначен для URL-кодирования строк:

JS
Скопировать код
const querystring = require('querystring');
console.log(querystring.escape('node=js&npm=i_love_it')); // node%3Djs%26npm%3Di_love_it

Визуализация

Если сравнивать URL с чемоданом, то параметры данных – это вещи, которые мы упаковываем внутрь:

Markdown
Скопировать код
Наполнение чемодана: ['Рубашка', 'Пляжные шорты🩳', 'Еда&Напитки']

URL-кодирование – это и есть упаковка нашего виртуального чемодана:

JS
Скопировать код
packedCase = encodeURIComponent('Рубашка Пляжные шорты🩳 Еда&Напитки');
Markdown
Скопировать код
Упакованный чемодан: 💼 ['Рубашка%20Пляжные%20Шорты%F0%9F%A9%B3%20Еда%26Напитки']

Так, данные подготовлены для безопасного переноса в URL.

Профессиональные рекомендации по кодированию

Расширенное кодирование с помощью библиотеки URI.js

Для более сложных задач, URI.js предоставляет обширные опции кодирования:

JS
Скопировать код
const URI = require('urijs');
const url = URI('http://welcome.to/javasworld');
console.log(url.normalize());

Защита от SQL-инъекций

Проверяйте данные на возможность SQL-инъекций перед кодированием:

JS
Скопировать код
const userInput = "Robert'); DROP TABLE Students;--";
const safeInput = encodeURIComponent(userInput);

Полезные материалы

  1. Query string | Документация Node.js v21.6.1
  2. encodeURIComponent() – JavaScript | MDN
  3. axios – npm
  4. GitHub – Gozala/querystring: Node's querystring module for all engines.
  5. qs – npm
  6. query-string – npm