URLSearchParams 追加额外和到 url 参数 Angular2+Ionic2



所以,这是我在stackoverflow上的第一篇文章,所以如果我没有足够努力地搜索,请原谅我,但。。。

我正在我们公司Ionic2+Angular2应用程序上构建一个简单的登录页面。登录表单会对我们的后端进行http调用,如果用户的凭据正确,它会用用户的凭据进行响应,然后允许用户进入主页,如果不正确,他们会收到401错误。

昨晚,当我在窗户机上把它接线好时,一切都很顺利。然而,在工作中,我们使用Mac,因此当我ionic run android和/或ionic serve --lab时,api调用没有正确地附加参数。显示:

private theUrl = 'http://theurl.com/mobileapi/getUser.cfm?';
public onlogin(email: string, password: string) {
let params: URLSearchParams = new URLSearchParams();
params.set('email', email);
params.set('password', password);
return this.http.get(this.theUrl, { search: params })
.map(res => res.json())
}

此代码使用URLSearchParams设置URL参数,然后将它们作为选项直接传递到http.get()请求中。-我们从前端角度表单传递电子邮件和密码。

现在,当应用程序被提供/运行时,API调用最终看起来是这样的:

http://theurl.com/mobileapi/getUser.cfm?&email=xxxx&password=xxxxx

我感兴趣的是.cfm&url的一部分。我知道它不应该被格式化为那样的呼叫。。。我是不是错过了一些正确格式化url参数的东西?

感谢

因为你的url有?->private theUrl = 'http://theurl.com/mobileapi/getUser.cfm?';,所以当Angular构建参数时,它会标记为has-param,然后这会在你得到的时候附加url。

使用这个替代:

private theUrl = 'http://theurl.com/mobileapi/getUser.cfm';

阅读此代码的更多信息:

if (search.length > 0) {
let prefix = '?';
if (this.url.indexOf('?') != -1) {
prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';
}
// TODO: just delete search-query-looking string in url?
this.url = url + prefix + search;
}

https://github.com/angular/angular/blob/2.4.7/modules/%40angular/http/src/static_request.ts#L81-L88

相关内容

  • 没有找到相关文章

最新更新