【发布时间】:2018-03-01 12:55:18
【问题描述】:
# 和 & 在角度 http.get() 请求 URL 中的问题
请先看我的代码。
角度服务
let versionsearch ="&";
let strweeksearch="#";
this.http.get(this.apiUrl + 'GetVersionInfo?vehicleVersion=' + versionsearch + '&structureWeek=' + strweeksearch,
{ withCredentials: true })
.map(responce => <CoCApiResponse[]>responce.json())
.catch(error => {
return Observable.throw(error);
});
网络 API
[HttpGet]
public CoCApiResponse GetVersionInfo([FromQuery]string vehicleVersion, [FromQuery]string structureWeek)
{
//code
}
解释和问题:
我在 Web API 中有一个 Get 方法,它有两个字符串参数。我只是通过传递这些参数的查询字符串从角度http 服务调用该休息服务。但特别是如果在查询字符串中传递的值为# 或&,我会遇到以下问题。
使用#:
如果我在查询字符串中传递#,API URL 将会中断。
但我从这个讨论中得到了一些想法:Passing a pound sign as a value in the query string of a URL, using Angular
所以我这样做是为了将 # 从角度服务替换为 %23,例如
strweeksearch.replace(/#/g, '%23');.
使用&:
API URL 会将其视为 3 个参数,例如
apiurl?versionsearch=&&strweeksearch=123455
所以 Web API 方法参数 vehicleVersion 总是得到 NULL。
如何做到这一点?我不喜欢将每个特殊字符都替换为
reserved characters。我需要在http.get()中接受每个特殊字符。如何在 Angular 或 Web API 中处理这个问题?
【问题讨论】:
-
您是否尝试使用传递给 .get() 的 config 对象的 params 属性来传递参数?见:AngularJS API: $http
标签: javascript angular typescript url asp.net-web-api