Pull to refresh

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.

Articles