首页 > 解决方案 > Angular http put - 调用了不正确的方法

问题描述

我有一些http.put包装纸。它会导致调用不正确的 PUT 重载。我需要返回的那个Observable<Object>,而是Observable<ArrayBuffer>被调用的那个。这是我http.put在 Angular 应用程序中的包装器:

  public put(endpoint: string, data?: any, options?) {
    let jsonData = JSON.stringify(data);

    if (options == undefined) {
      options = {};
    }
    options.headers = this.headers;

    return this.http.put(this.uri + endpoint, jsonData, options);
  }

如果我这样称呼它,那么即使在编译期间它也会决定调用以下 http.put 重载:

put(url: string, body: any | null, options: {
    headers?: HttpHeaders | {
        [header: string]: string | string[];
    };
    observe?: 'body';
    params?: HttpParams | {
        [param: string]: string | string[];
    };
    reportProgress?: boolean;
    responseType: 'arraybuffer';
    withCredentials?: boolean;
}): Observable<ArrayBuffer>;

但是,我需要调用返回 sjust 对象的那个:

 put(url: string, body: any | null, options?: {
        headers?: HttpHeaders | {
            [header: string]: string | string[];
        };
        observe?: 'body';
        params?: HttpParams | {
            [param: string]: string | string[];
        };
        reportProgress?: boolean;
        responseType?: 'json';
        withCredentials?: boolean;
    }): Observable<Object>;
    

标签: angularhttp

解决方案


尝试设置responseType: 'json'options.

  public put(endpoint: string, data?: any, options?) {
    let jsonData = JSON.stringify(data);

    if (options == undefined) {
      options = {};
    }
    options.headers = this.headers;
    options.responseType = 'json';

    return this.http.put(this.uri + endpoint, jsonData, options);
  }

推荐阅读