Browse Source

Merge pull request #10815 from abpframework/auto-merge/rel-5-0/672

Merge branch dev with rel-5.0
pull/10829/head
Mehmet Erim 4 years ago
committed by GitHub
parent
commit
77d1c3fb64
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 71
      docs/en/UI/Angular/HTTP-Error-Reporter-Service.md
  2. 8
      docs/en/UI/Angular/HTTP-Requests.md

71
docs/en/UI/Angular/HTTP-Error-Reporter-Service.md

@ -0,0 +1,71 @@
# HTTP Error Reporter Service
`HttpErrorReporterService` is a service which is exposed by `@abp/ng.core` package. HTTP errors can be reported by using this service. The service emits an event when an error is reported and keeps the errors as an array. The [`RestService`](./HTTP-Requests#restservice) uses the `HttpErrorReporterService` for reporting errors.
See the example below to learn how to report an error:
```ts
import { HttpErrorReporterService } from '@abp/ng.core';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { of } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class SomeService {
constructor(private http: HttpClient, private httpErrorReporter: HttpErrorReporterService) {}
getData() {
return this.http.get('http://example.com/get-data').pipe(
catchError(err => {
this.httpErrorReporter.reportError(err);
return of(null);
}),
);
}
}
```
See the following example to learn listening the reported errors:
```ts
import { HttpErrorReporterService } from '@abp/ng.core';
import { HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable()
export class MyErrorHandler {
constructor(private httpErrorReporter: HttpErrorReporterService) {
this.handleErrors();
}
handleErrors() {
this.httpErrorReporter.reporter$.subscribe((err: HttpErrorResponse) => {
// handle the errors here
});
}
}
```
## API
### `reporter$: Observable<HttpErrorResponse>`
`reporter$` is a getter, returns an observable. It emits an event when a new error is reported. The event value type is `HttpErrorResponse`.
### `errors$: Observable<HttpErrorResponse[]>`
`errors$` is a getter, returns an observable. It emits an event when a new error is reported. The event value is all errors reported at runtime.
### `errors: HttpErrorResponse`
`errors` is a getter that returns all errors reported.
### `reportError(error: HttpErrorResponse): void`
`reportError` is a method. The errors can be reported via this.
When an error is reported, the method triggers the `reports$` and `errors$` observables to emit an event.

8
docs/en/UI/Angular/HTTP-Requests.md

@ -21,13 +21,13 @@ getConfig() {
Although clear and flexible, handling errors this way is repetitive work, even when error processing is delegated to the store or any other injectable. Although clear and flexible, handling errors this way is repetitive work, even when error processing is delegated to the store or any other injectable.
An `HttpInterceptor` is able to catch `HttpErrorResponse`  and can be used for a centralized error handling. Nevertheless, cases where default error handler, therefore the interceptor, must be disabled require additional work and comprehension of Angular internals. Check [this issue](https://github.com/angular/angular/issues/20203) for details. An `HttpInterceptor` is able to catch `HttpErrorResponse` and can be used for a centralized error handling. Nevertheless, cases where default error handler, therefore the interceptor, must be disabled require additional work and comprehension of Angular internals. Check [this issue](https://github.com/angular/angular/issues/20203) for details.
## RestService ## RestService
ABP core module has a utility service for HTTP requests: `RestService`. Unless explicitly configured otherwise, it catches HTTP errors and dispatches a `RestOccurError` action. This action is then captured by the `ErrorHandler` introduced by the `ThemeSharedModule`. Since you should already import this module in your app, when the `RestService` is used, all HTTP errors get automatically handled by default. ABP core module has a utility service for HTTP requests: `RestService`. Unless explicitly configured otherwise, it catches HTTP errors and dispatches a `RestOccurError` action. This action is then captured by the `ErrorHandler` introduced by the `ThemeSharedModule`. Since you should already import this module in your app, when the `RestService` is used, all HTTP errors get automatically handled by default.
@ -67,7 +67,7 @@ getFoo(id: number) {
The `request` method always returns an `Observable<T>`. Therefore you can do the following wherever you use `getFoo` method: The `request` method always returns an `Observable<T>`. Therefore you can do the following wherever you use `getFoo` method:
```js ```js
doSomethingWithFoo(id: number) { doSomethingWithFoo(id: number) {
@ -205,7 +205,7 @@ You may find `Rest.Observe` enum [here](https://github.com/abpframework/abp/blob
## HTTP Error Handling ## HTTP Error Handling
When the `RestService` is used, all HTTP errors are automatically handled by `ErrorHandler` which is a service that exposed by the `@abp/ng.theme.shared` package. When the `RestService` is used, all HTTP errors are reported to the [`HttpErrorReporterService`](./HTTP-Error-Reporter-Service), and then `ErrorHandler`, a service exposed by the `@abp/ng.theme.shared` package automatically handles the errors.
### Custom HTTP Error Handler ### Custom HTTP Error Handler

Loading…
Cancel
Save