使用 Angular 2 将 URL 参数发送到 Express
send URL parameters to Express with Angular 2
我正在使用此 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'));
}
我正在使用这个 URL http://localhost:5050/api/district/restaurants?id=8
如果在 Express 中我使用 req.query
它工作正常但我需要使用这个新的 URL http://localhost:5050/api/district/:id/restaurants
并在 Express 中使用 req.params
。
我的问题是我无法在不修改 URL 字符串的情况下使用 Angular 设置 :id
参数,我想有更好的方法来完成这项任务。感谢您的帮助
这个怎么样:
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), ...);
// ...
}
我正在使用此 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'));
}
我正在使用这个 URL http://localhost:5050/api/district/restaurants?id=8
如果在 Express 中我使用 req.query
它工作正常但我需要使用这个新的 URL http://localhost:5050/api/district/:id/restaurants
并在 Express 中使用 req.params
。
我的问题是我无法在不修改 URL 字符串的情况下使用 Angular 设置 :id
参数,我想有更好的方法来完成这项任务。感谢您的帮助
这个怎么样:
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), ...);
// ...
}