使用 http.get 时如何获取非 http 状态码?
How to get a non http status codes when using http.get?
我是 typescript 的新手,如果 api 的响应不是 200,我一直在尝试将用户重定向到错误页面。我在网上搜索了很长时间,一直在努力寻找一个好的方法去做这个。这是我所拥有的:
我的服务中有基本的 http 方法 class 像这样:
PullDataFromServer(id: string): Observable<any> {
return this.http.get<string>(this.baseUrl + 'api/data/getdata?id=' + id, { observe: 'response' });
}
在我的组件 classes 上,我有这个:
this.service.PullDataFromServer(this.userData.Id).subscribe({
next: data => {
this.data = data.body;
this.loaded = true;
},
error: err => {
this.router.navigate(['/errorpage']);
}
});
但是,如果 http 代码不是 200,我可以在浏览器中看到服务器需要很长时间才能响应。我知道 http 调用是异步调用,你不能让它们同步。当它带来数据时,您只能让一些代码发挥作用。我的问题是我将如何设法在服务器错误上重定向用户?
有文章讲异步调用,但我不明白如何管理错误?任何帮助将不胜感激。
我也试过 rxjs:
map(() => ''),
catchError((error: Error) => {
return this.router.navigate(['/errorpage']);
}));
如果有另一个电话,而我正在等待上一个电话,Aysnc Await 会很好。但是如果我只是在等待一个电话并且我需要电话的响应呢?
对于难以处理 http 调用和捕获错误的新手,您可以使用以下方法捕获错误并等待响应:
this.service.PullDataFromServer(this.userData.Id).subscribe({
next: data => {
this.data = data.body;
this.loaded = true;
},
error: err => {
this.router.navigate(['/errorpage']);
}
});
如果您正在等待页面的数据,您可以使用 angular 功能,例如 *ngIf。如果您有另一个呼叫等待获取数据,您可以将它们嵌套在上面并在其中包含您的逻辑。
我是 typescript 的新手,如果 api 的响应不是 200,我一直在尝试将用户重定向到错误页面。我在网上搜索了很长时间,一直在努力寻找一个好的方法去做这个。这是我所拥有的:
我的服务中有基本的 http 方法 class 像这样:
PullDataFromServer(id: string): Observable<any> {
return this.http.get<string>(this.baseUrl + 'api/data/getdata?id=' + id, { observe: 'response' });
}
在我的组件 classes 上,我有这个:
this.service.PullDataFromServer(this.userData.Id).subscribe({
next: data => {
this.data = data.body;
this.loaded = true;
},
error: err => {
this.router.navigate(['/errorpage']);
}
});
但是,如果 http 代码不是 200,我可以在浏览器中看到服务器需要很长时间才能响应。我知道 http 调用是异步调用,你不能让它们同步。当它带来数据时,您只能让一些代码发挥作用。我的问题是我将如何设法在服务器错误上重定向用户?
有文章讲异步调用,但我不明白如何管理错误?任何帮助将不胜感激。
我也试过 rxjs:
map(() => ''),
catchError((error: Error) => {
return this.router.navigate(['/errorpage']);
}));
如果有另一个电话,而我正在等待上一个电话,Aysnc Await 会很好。但是如果我只是在等待一个电话并且我需要电话的响应呢?
对于难以处理 http 调用和捕获错误的新手,您可以使用以下方法捕获错误并等待响应:
this.service.PullDataFromServer(this.userData.Id).subscribe({
next: data => {
this.data = data.body;
this.loaded = true;
},
error: err => {
this.router.navigate(['/errorpage']);
}
});
如果您正在等待页面的数据,您可以使用 angular 功能,例如 *ngIf。如果您有另一个呼叫等待获取数据,您可以将它们嵌套在上面并在其中包含您的逻辑。