【发布时间】:2019-12-31 07:04:28
【问题描述】:
我想要一个标准的 api 响应,如下所示。
对于成功响应:
{
"version": "1.0",
"statusCode": 200,
"result": {data....}
}
对于错误响应:
{
"version": "1.0",
"statusCode": 500, (this may be 401, 404,403,...)
"errorMessage": {message....}
}
我的服务如下:
export class MyService {
constructor(private http: HttpClient) { }
getData(): Observable<any[]> {
return this.http.get<any[]>(`http://localhost/data`).pipe(map((response: any) => {
return response;
}))
}
}
如果使用 toastr 的响应有错误,我需要显示弹出窗口。那么我在哪里使用我的 toastr 服务以获得最佳解决方案?
- 组件类
- 服务类
- Http 拦截器
我不想重复自己。
【问题讨论】:
-
组件更好
-
如果您不会显示除
errorMessage以外的任何内容(即特定于组件的内容),那么拦截器或自定义HTTP 服务可能是一个更好的地方,以免重复相同的代码。但是如果你想显示一些特定于组件的消息,那么最好注入你想要的组件。 -
@HarunYilmaz 我更新了 pust,我的错误类型代码可能是 401, 404,403, ....
-
我认为最好为它创建一个服务。原因是我通常使用 Angular Material 的 Snackbar (material.angular.io/components/snack-bar/overview) 来完成您想做的事情。然后,我会在 HTTPWrapper 中使用该服务,或者在普通消息的拦截器中使用该服务,然后在特定消息的组件中使用它。
-
那么我建议通过检查响应状态来捕获和处理拦截器中的错误。