我正在尝试构建一个从REST服务获取数据的URL,有效的URL应该像这样:
http://SITENAME/api/get_posts/?count=5&page=1&post_type=gallery
,我有像count,page,post_type等参数。这些都是可选参数,其中一个或全部可能为空。我尝试了以下代码:var query = 'http://localhost/wptest/api/get_posts/?';
fetchData(countIn: int, pageIn: int, typeIn: string, query: string) {
if (this.countIn) //if count not null, add count parameter.
query = `${query}&count=${this.countIn}`;
if (this.pageIn)
query = `${query}&page=${this.pageIn}`;
if (this.typeIn)
query = `${query}&post_type=${this.typeIn}`;
return this.http.get(query).map(res => res.json());
}
这段丑陋的代码返回了一个无效的URL,当我打开Chrome调试器=>网络选项卡时,我发现:
然而,我没有收到异常提示,因为某种方式修复了URL并发送了一个带有有效URL的新请求: 问题出在?count=5&page=1
和?&count=5&page=1
之间的差异,导致选项卡旋转器被卡住且无法结束。
问:为了获得有效的URL,代码可以做哪些改进?