Добавление параметров в URL, размещение массива в строке запроса

#node.js #express #http #url #query-parameters

Вопрос:

Цель

Я создал интерактивную игру, в которой люди могут выбрать шесть игроков для создания своей команды всех звезд. Когда они нажимают «Поделиться» в Twitter, я надеюсь, что у них будет URL-адрес, содержащий параметры всех шести игроков, что-то вроде website.com/?playerName=picked?playerName=picked того, чтобы люди могли делиться своими командами

Вопрос

  • Каков наилучший способ добавления параметров к URL-адресу?
  • Как поместить массив в строку запроса?

Ответ №1:

Вы можете использовать массив непосредственно в URL-адресе, однако вам потребуется сериализовать массив в строку. подобный этому player[]=oneamp;player[]=two

вот небольшая функция для ее автоматизации.

при использовании URL-адресов вы всегда должны использовать encodeURIComponent для кодирования любых символов, не относящихся к URL-адресам. Игроки представляют собой массив, поэтому мы сопоставляем его и получаем новый массив, который был закодирован.

После этого нам просто нужно объединить массив с amp;

 const players = [  'player Name 1',  'playerName2',  'playerName3' ]  const parameterizeArray = (key, arr) =gt; {  arr = arr.map(encodeURIComponent)  return '?' key '[]='   arr.join('amp;' key '[]=') }  console.log(parameterizeArray('player', players)) 

Редактировать

Единственное отличие-стиль объявления функции, все остальное-стандарт ES5

 function parameterizeArray(key, arr) {  arr = arr.map(encodeURIComponent)  return '?' key '[]='   arr.join('amp;' key '[]=') } 

Комментарии:

1. Вы не возражаете также включить фрагмент без константы и более новый синтаксис ES2015

Ответ №2:

Более чистый:

 website.com/?players=player1,player2,player3,player4  

Затем разделите запрос, чтобы получить результат:

 var arrayResult = query.players.split(",")  

Комментарии:

1. это решение потребует проверки того, что имена не могут иметь «разделенные» значения, в данном случае запятые.

Ответ №3:

Я не уверен, можете ли вы даже кодировать массивы, и это может быть связано с конкретной структурой, если вы можете

строки запроса имеют формат ?a=1amp;b=2amp;c=3amp;... , и добавление несложно. Вы определенно можете передать 6 игроков в качестве параметров, как указано выше

Изменить: Для каждого запроса строка запроса будет выглядеть так

 website.com/?player1=foobaramp;player2=foobuzamp;player3=foobaz