我试图在Angular 7中编码查询参数值。但是当我的查询参数值包含任何特殊字符时,我得到400 Bad Request状态代码
请求URL失败:http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE
但是,当我的查询参数值不包含任何特殊字符时,我得到200 OK状态代码。
成功的请求网址:http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE
预期的请求网址必须像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 -X GET "http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE" -H "accept: application/json"
请求网址
http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE
同意,你可以用urlserializer中的字符问题做一般性更改:https://angular.io/api/router/DefaultUrlSerializer https://angular.io/api/router/UrlSerializer
您可以在app.module.ts中覆盖它(提供:{..,..})您可以看到:Angular 2 - Implement UrlSerializer
问候