我很难理解为什么Github API与Postman一起使用但不在我的 Angular应用中。
例如
const url = `${this.apiBaseUrl}/orgs/angular/public_members?page=${pageNumber}`
即使有多个页面。
上述网址的代码为:
getContributors(pageNumber): Observable<any> {
const url = `${this.apiBaseUrl}/orgs/angular/public_members?page=${pageNumber}`;
const requestOptions = this.getRequestOptions();
return this.http.get(url, requestOptions);
}
但是,使用时
const url = `${this.apiBaseUrl}/users/${user}`;
(注意它是一个不同的端点/用户),超过1次(字面意思,它只能运行一次 - 偶尔两次),大多数呼叫保持不变(在Chrome中我得到:{{1 }})
上述网址的代码为:
Provisional headers are shown
和getContributor(login): Observable<any> {
const url = `${this.apiBaseUrl}/users/${login}`;
const requestOptions = this.getRequestOptions();
return this.http.get(url, requestOptions).timeout(30000)
.catch(error => Observable.of({
login,
error,
}));
}
定义为:
getRequestOptions()
我注意到的是我的REST客户端(这里我使用Postman作为示例,在这个特定情况下我使用了Webstorm的一个),const readonlyToken = MY_API_TOKEN;
const headers = new Headers({
// 'Cache-Control': 'no-cache',
Accept: '*/*',
Authorization: `token ${readonlyToken}`,
});
return new RequestOptions({ headers });
}
可以工作,而使用Angular我得到Cache-Control
显然,在Postman中尝试一下,它确实有效。 现在,我不确定问题是Github API,但这种半工作情况很难调试。欢迎提出建议!
我一直在尝试延迟请求,但即使使用Cache-Control header not allowed in preflight requests
运算符,它似乎也不起作用(我使用Observable's delay
运算符)。
我无法分享完整的代码。
更新:我怀疑,没有批处理 API调用(即每1秒一次)有效。但是,这并没有解决原始问题