#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