Удалите все параметры запроса URL с помощью normalize-url - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь удалить все параметры запроса из URL с пакетом normalize-url, но получаю некоторые странные результаты.

Я использую опцию removeAllQueryParameters следующим образом:

    if (options.removeAllQueryParameters) {
        for (const key of urlObj.searchParams.keys()) {
            urlObj.searchParams.delete(key);
        }
    }

И использовать его следующим образом при вызове метода для добавления URL в базу данных:

{

let url = normalizeUrl(model.article.url,{removeAllQueryParameters: true});

 callServerMethod({
  name: 'addNewPost',
   data: {
       title: model.article.title,
       url: url,
                            },

Для примера URL: https://example.com? Utm_source = test & utm_medium = test & utm_campaign = test

Я получаю следующий результат: https://example.com? Utm_campaign = тест

Интересно для второго примера URL: https://example.com? Utm_source = test Результат https://example.com - правильно.

Функция пропускает последний параметр в ситуации, когда необходимо удалить более 1 параметра.

Заранее спасибо за любые подсказки.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Следующий подход работал для меня, однако я не уверен, что установка urlObj.search подобным образом является хорошей практикой:

    if (options.removeAllQueryParameters) {
            urlObj.search = '';
        }
0 голосов
/ 12 апреля 2019

searchParams.keys() возвращает Iterator, и не рекомендуется изменять исходный объект во время его итерации.

Просто скопируйте ключи в массив и переберите его:

for (const key of [...urlObj.searchParams.keys()]) {
  urlObj.searchParams.delete(key);
}
...