Кодирование URL в Node.js без использования доп. модулей
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Встроенная в JavaScript функция encodeURIComponent
является эффективным инструментом для URL-кодирования в Node.js. Она преобразует специальные символы в их соответствующие URL-безопасные аналоги:
const encodedPhrase = encodeURIComponent('Say hi!');
console.log(encodedPhrase); // 'Say%20hi%21'
Таким образом, специальные символы, включая пробелы и знаки препинания, преобразуются для безопасной передачи через сеть!
Выбираем подходящий способ кодирования
В зависимости от поставленной задачи выбираются разные методы кодирования.
Использование encodeURIComponent
для кодирования параметров данных
Функция encodeURIComponent
эффективно решает задачи по кодированию большинства символов:
console.log(encodeURIComponent('&, =, #, ?, %')); // %26%2C%20%3D%2C%20%23%2C%20%3F%2C%20%25
Использование encodeURI
для кодирования полного URL
encodeURI
полезен при кодировании всего URL, внимательно обрабатывая зарезервированные символы:
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-кодирования строк:
const querystring = require('querystring');
console.log(querystring.escape('node=js&npm=i_love_it')); // node%3Djs%26npm%3Di_love_it
Визуализация
Если сравнивать URL с чемоданом, то параметры данных – это вещи, которые мы упаковываем внутрь:
Наполнение чемодана: ['Рубашка', 'Пляжные шорты🩳', 'Еда&Напитки']
URL-кодирование – это и есть упаковка нашего виртуального чемодана:
packedCase = encodeURIComponent('Рубашка Пляжные шорты🩳 Еда&Напитки');
Упакованный чемодан: 💼 ['Рубашка%20Пляжные%20Шорты%F0%9F%A9%B3%20Еда%26Напитки']
Так, данные подготовлены для безопасного переноса в URL.
Профессиональные рекомендации по кодированию
Расширенное кодирование с помощью библиотеки URI.js
Для более сложных задач, URI.js предоставляет обширные опции кодирования:
const URI = require('urijs');
const url = URI('http://welcome.to/javasworld');
console.log(url.normalize());
Защита от SQL-инъекций
Проверяйте данные на возможность SQL-инъекций перед кодированием:
const userInput = "Robert'); DROP TABLE Students;--";
const safeInput = encodeURIComponent(userInput);