Я пытаюсь кодировать значения параметров запроса в 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
Вы можете расшифровать свои параметры, используя:
decodeURIComponent(encodedURI_string)
больше информации здесь
Согласитесь, и вы можете сделать общее изменение с URL-адресами проблем с символами в urlserializer: https://angular.io/api/router/DefaultUrlSerializer https://angular.io/api/router/UrlSerializer
Вы можете перезаписать это в app.module.ts (укажите: {.., ..}) Вы можете увидеть это: Угловой 2 - агрегат UrlSerializer
1010 * привет *