我正在使用此Angular服务从Express获取数据:
getRestaurants(districtId) : Observable<void[]>{
let params: URLSearchParams = new URLSearchParams();
params.set('id', districtId);
return this.http.get(this.url, { search: params })
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
我使用的是此网址http://localhost:5050/api/district/restaurants?id=8
如果在Express中使用req.query
,它可以正常工作但我需要在Express中使用这个新网址http://localhost:5050/api/district/:id/restaurants
并使用req.params
。
我的问题是我无法在不修改URL字符串的情况下使用Angular设置:id
参数,我认为有更好的方法来执行此任务。谢谢你的帮助
答案 0 :(得分:0)
这个怎么样:
private url = 'http://localhost:5050/api/district/:id/restaurants';
private _prepareUrl(districtId: number): string {
return this.url.replace(':id', districtId);
}
getRestaurants(districtId) {
// ...
this.http.get(this._prepareUrl(districtId), ...);
// ...
}
你可以使用Router
的函数createUrlTree
,但你也会有一个准备函数..
private urlPrefix = 'http://localhost:5050/api';
constructor(private _router: Router) { }
private _prepareUrl(districtId: number): string {
return this.urlPrefix + this._router.createUrlTree(['district', districtId, 'restaurants']).toString();
}
getRestaurants(districtId) {
// ...
this.http.get(this._prepareUrl(districtId), ...);
// ...
}