HttpRequest.ts 1.84 KB
import { AxiosError, AxiosHeaders, AxiosRequestConfig, RawAxiosRequestHeaders } from '@ohos/axios';
import HashMap from '@ohos.util.HashMap';
import service from './AxiosRequest';

export class HttpRequest {
  // 加入泛型限定,返回数据类型为T,
  static request<T = any>(config: AxiosRequestConfig): Promise<T> {
    return new Promise<T>((resolve, reject) => {
      service.request<any, T>(config)
        .then((res: T) => {
          resolve(res)
        })
        .catch((err: AxiosError) => {
          reject(err)
        })
    })
    // return service.request<any, T>(config)
  }

  private static get0<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
    return service.get(url, config)
  }

  static get<T = any>(url: string, headers?: HashMap<string, string>): Promise<T> {
    let requestHeaders: AxiosHeaders = new AxiosHeaders()
    headers?.forEach((v, k) => {
      requestHeaders.set(k, v);
    });
    let config: AxiosRequestConfig = {
      headers: requestHeaders as RawAxiosRequestHeaders
    }
    return service.get(url, config)
  }

  static delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
    return service.delete(url, config)
  }

  static post0<T = any>(url: string, data?: object, config?: AxiosRequestConfig): Promise<T> {
    return service.post(url, data, config)
  }

  static post<T = any>(url: string, data1?: any, headers?: HashMap<string, string>): Promise<T> {
    let requestHeaders: AxiosHeaders = new AxiosHeaders()
    headers?.forEach((v, k) => {
      requestHeaders.set(k, v);
    });
    let config: AxiosRequestConfig = {
      headers: requestHeaders as RawAxiosRequestHeaders,
    }
    return service.post(url, data1, config)
  }

  static put<T = any>(url: string, data?: object, config?: AxiosRequestConfig): Promise<T> {
    return service.put(url, data, config)
  }
}