使用 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), ...);

   // ...
}