在构建我的应用程序时,我发现这篇文章正在运行efficiently with RESTful services with Angular 2。这个家伙也将他的代码放在github上,但它是旧版Angular的。
我决定实现这一点,在执行此操作时,我必须进行一些修改,以使其适用于当前版本的Angular。
现在,在发出获取请求时,为了获得所有锦标赛/tournaments
,它会调用localhost/api/tournaments
并获取所有锦标赛。但是,在向/tournament/1
发送帖子请求时,它会调用/tournament/1
而不是api/tournament/1
。
app.module.ts
providers: [
ErrorNotifierService,
{provide: RequestOptions, useClass: AppRequestOptions},
{provide: WEBAPI_URL_TOKEN, useValue: '/api'}
]
app.request.options.ts
export const WEBAPI_URL_TOKEN = new OpaqueToken('webApiBaseUrl');
export class AppRequestOptions extends BaseRequestOptions {
constructor(@Inject(WEBAPI_URL_TOKEN) private webApiBaseUrl: string) {
super();
console.log('webApiBaseUrl = ' + webApiBaseUrl);
}
merge(options?: RequestOptionsArgs): RequestOptions {
console.log(options);
options.url = (this.webApiBaseUrl ? this.webApiBaseUrl :
'') + options.url;
console.log(options);
return super.merge(options);
}
}
在app.request.options
中记录get请求的选项时,会记录下来:
RequestOptions {method: 0, headers: null, body: null, url: "/tournaments", search: null…}
RequestOptions {method: 0, headers: null, body: null, url: "/api/tournaments", search: null…}
在app.request.options
中记录发布请求的选项时,会记录下来:
RequestOptions {method: null, headers: null, body: Object, url: null, search: null…}
RequestOptions {method: null, headers: null, body: Object, url: "/apinull", search: null…}
不知怎的,一切都是空的,甚至是网址。虽然我使用http.post('/tournament/1', {}).map(res => res.json).subscribe()
发布了帖子请求。
也许更奇怪的是,当看到真正的请求时,我发现网址是:http://localhost/tournament/1/
。
对此问题,我们将不胜感激。不知何故,这对于获取请求是正确的,但不适用于发布请求。
提前致谢。