У меня была проблема, когда мой URL был отключен.Я вручную складывал свой URL, как
this.http.get(apiUrl + 'endpoint?filter=' + encodeUri(JSON.stringify(params)).
this.http.get(apiUrl + 'endpoint?filter=' + encodeUri(JSON.stringify(params))
Это не работало, поэтому я изменил его на работу, как
this.http.get(apiUrl + 'endpoint', {params:filter}).
this.http.get(apiUrl + 'endpoint', {params:filter})
Вывод из первого метода: http://mydomain/api/endpoint?filter=%7B%22where%22:%7B%22and%22:%5B%7B%22project_id%22:%220232%22%7D,%7B%22floor%22:%22Building%20
Вывод из второго метода: http://mydomain/api/endpoint?filter=%7B%22where%22:%7B%22and%22:%5B%7B%22project_id%22:%220232%22%7D,%7B%22floor%22:%22Building%20#1%7CFloor%20#1%22%7D%5D%7D%7D
Как мы видим, в первом методе пропущено много символов.Выход второго метода - это ожидаемый результат первого метода, но не фактический.Кто-нибудь может объяснить, почему это будет?
EncodeURIComponent будет кодировать #, encodeURI не будет (и предназначен для получения полного URL-адреса и пропуска первой части перед кодированием).Передача с символом # прервет его раньше.
EncodeURIComponent
#