提供AppRequestOptions的Angular 2对于发布请求失败

时间:2017-04-08 21:32:03

标签: angular post options apprequests

在构建我的应用程序时,我发现这篇文章正在运行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/

对此问题,我们将不胜感激。不知何故,这对于获取请求是正确的,但不适用于发布请求。

提前致谢。

0 个答案:

没有答案