Первый параметр строки запроса не анализируется с использованием пакета qs npm - PullRequest
0 голосов
/ 27 сентября 2018

Я не могу разобрать первый параметр строки запроса, используя пакет qs npm.Что я делаю не так?

Я выполняю эти команды в своей консоли

import * as qs from './qs'
var addr = "https://www.somesite.se/?title=querystring&action=edit"
var parsed = qs.parse(addr)

После выполнения этих команд parsed имеет значение:

{ 'https://www.somesite.se/?title': 'querystring',
  action: 'edit' }

Этостранный.Почему title не является свойством возвращаемого объекта?Я ожидаю, что значение parsed.title будет 'querystring'.но это не так.Значение parsed.title равно undefined.

Почему?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Ответ: библиотека qs использует только парсинг строки запроса.

Согласно Википедии :

строка запросачасть унифицированного указателя ресурса (URL), которая присваивает значения указанным параметрам.

Например:

enter image description here

В вашем случае правильные коды должны быть:

var addr = 'title=querystring&action=edit';
var parsed = qs.parse(addr);
console.log(parsed); // {title: "querystring", action: "edit"}

Чтобы обойти начальный вопросительный знак, используйте ignoreQueryPrefix:

var addr2 = '?title=querystring&action=edit';
var parsed2 = qs.parse(addr2, { ignoreQueryPrefix: true });
console.log(parsed2); // {title: "querystring", action: "edit"}

Надеюсь, это поможет!

0 голосов
/ 27 сентября 2018

qs анализирует строки запроса.Он не разбирает URL.Используйте парсер URL (new URL(addr).search.substring(1)), чтобы сначала получить строку запроса из URL.

qs.parse("title=querystring&action=edit") должен дать вам правильный ответ.

Теперь, когда я думаю об этом ... зачем вообще использовать qs?new URL(addr).searchParams должен уже дать вам проанализированные параметры ...

...