Chciałbym użyć querystring.stringify na obiekcie. Wymagania dotyczące łańcucha są nieco nietypowe, a gwiazdki, ukośniki i apostrof muszą zostać usunięte. Querystring nie wymyka się z tego (zwykle nie musi być), ale dokumentacja mówi, że querystring.escape jest specjalnie eksponowany, dzięki czemu możemy zastąpić go naszą własną funkcją. Poniższy będzie pracować dla mnie:Przesłanianie pliku node.js querystring.escape w ramach pojedynczego modułu
querystring.escape = function(str) {
str = encodeURIComponent(str)
.replace(/\*/g, '%2A')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/'/g, '%27');
return str;
};
Moim jedynym zmartwieniem jest to, że, jeśli dobrze rozumiem, to może zmienić zachowanie innych modułów, które mogą również wymagać ciągu kwerendy (z jego normalnej funkcji escape) w przyszłości. Dokumentacja node.js mówi, że moduły są ładowane tylko raz, a oryginalna instancja jest zwracana do kolejnych wywołań wymagających. Czy istnieje sposób, aby zmusić ten szczególny przypadek kwerendy do bycia wyjątkowym?
Oczywiście mogę po prostu napisać opakowanie, które zastępuje konwencjonalne wywołanie querystring.stringify, ale jestem ciekawy, ponieważ wydawało mi się dziwne, że standardowy moduł węzła naprawdę miałby ustawienie "globalne", chyba że istnieje jakiś sposób, aby wymagać wyjątkowej instancji za końcem.
Dziękuję za to: https://github.com/flatiron/cradle/pull/313/files#diff-73b7aef1765d18b91942243d634fe790R10 – ceremcem