Angular中处理Http请求

  • 使用HttpClient.get等方法进行http请求,一般都是返回的一个Observable,给上层进行订阅处理
  • 将响应转成响应的Model类,可以直接在HttpClient.get中指定,如果有特殊处理(比如只要响应中的一部分),那么可以在返回的Observable后继续使用pipe、map等方法结合lambda表达式进行处理,其中可以使用as来转换类型。
import { HttpClient, HttpErrorResponse, HttpParams } from ‘@angular/common/http‘;

@Injectable({
  providedIn: ‘root‘
})
export class XXX {
  constructor(
    private readonly http: HttpClient) { }

  getXXX(): Observable<ModelClass> {
    return this.http.get<ModelClass>("url").pipe(
      catchError((err) => this.handleError(err)));
  }

  getYYY(page: number = 0, size: number = 10): Observable<Array<ModelClass>> {
    const params = new HttpParams()
      .set(‘page‘, String(page))
      .set(‘size‘, String(size));
    return this.http.get<any>("url", { params }).pipe(
      map(response => response.assetList as Array<ModelClass>),
      catchError(err => this.handleError(err, of([] as Array<ModelClass>)))
    );
  }
}

相关推荐