Как кодировать параметры запроса, содержащие специальные символы в Angular 7? - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь кодировать значения параметров запроса в Angular 7. Но я получаю код состояния 400 Bad Request, когда значения моего параметра запроса содержат какой-либо специальный символ

Неудачный запрос URL: http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE

Однако я получаю код состояния 200 OK, когда значения моего параметра запроса не содержат специальных символов.

URL-адрес успешного запроса: http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE

Ожидаемый URL запроса должен быть таким http://localhost/cardvalues?parentcardvalues=VALUE1&parentcardvalues=VALUE2

Ниже мой код,

parentcardvalues=["STONE","STONE AGE"]

let myparams = new HttpParams();

    if(parentcardvalues.length != 0)
       parentcardvalues.forEach((value) => { 

myparams = myparams.append( 'parentcardvalues',   encodeURIComponent(value) );

});

 this.http.get(this.baseUrl + 'api/67/cardvalues', {params: myparams});

Спецификация Swagger,

Curl

curl -X GET "http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE" -H  "accept: application/json"

Запрос URL

http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Вы можете расшифровать свои параметры, используя:

decodeURIComponent(encodedURI_string)

больше информации здесь

0 голосов
/ 06 апреля 2019

Согласитесь, и вы можете сделать общее изменение с URL-адресами проблем с символами в urlserializer: https://angular.io/api/router/DefaultUrlSerializer https://angular.io/api/router/UrlSerializer

Вы можете перезаписать это в app.module.ts (укажите: {.., ..}) Вы можете увидеть это: Угловой 2 - агрегат UrlSerializer

1010 * привет *

...