Comments 3
Только URLSearchParams плохо обрабатывает массивы
new URLSearchParams({ arr: [1,2] }).toString();
даст "arr=1%2C2", а хотелось бы "arr=1&arr=2"
На самом деле, обработка массива вполне допустимая и корректная.
Например, в node этот вариант кодирования массивов поддерживается.
При этом сторонняя и очень популярная библиотека qs имеет специальный параметр { comma: true }
Также стоит отметить, что URLSearchParams использует RFC1738 стандарт, а не RFC3986. То есть пробел кодируется символом плюса +
, а не %20
.
Например, из документации к того же qs пакета, можно увидеть это различие:
assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c');
assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c');
assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c');
«arr=1&arr=2» — так тоже возможно
new URLSearchParams([['arr', 1], ['arr', 2]]).toString();
Sign up to leave a comment.
Генерация URL с параметрами на коленке и best practice