wistroni40-bnft
Version:
Benefit platform parameters publish job template
121 lines (112 loc) • 2.8 kB
text/typescript
/**
* 專案名稱: @wistroni40/bnft
* 部門代號: ML8100
* 檔案說明: Axios HTTP服務
* @CREATE Thu Jan 21 2021 下午4:21:00
* @author Steve Y Lin
* @contact Steve_Y_Lin@wistron.com #1342
* -----------------------------------------------------------------------------
* @NOTE
*/
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import { from, Observable } from 'rxjs';
import { HttpAdapter } from '../../method';
/**
* Axios HTTP服務
*/
export class AxiosHttpService implements HttpAdapter {
/**
* @param instance Axios實例
*/
constructor(private instance: AxiosInstance = axios) {}
/**
* 調用HTTP GET
*
* @method public
* @param url 呼叫URL
* @param options 查詢選項
* @return 回傳查詢結果
*/
public get<T = any>(
url: string,
options?: AxiosRequestConfig
): Observable<AxiosResponse<T>> {
return from(this.instance.get<T>(url, options));
}
/**
* 調用HTTP DELETE
*
* @method public
* @param url 呼叫URL
* @param options 查詢選項
* @return 回傳查詢結果
*/
public delete<T = any>(
url: string,
options?: any
): Observable<AxiosResponse<T>> {
return from(this.instance.delete<T>(url, options));
}
/**
* 調用HTTP HEAD
*
* @method public
* @param url 呼叫URL
* @param options 查詢選項
* @return 回傳查詢結果
*/
public head<T = any>(
url: string,
options?: any
): Observable<AxiosResponse<T>> {
return from(this.instance.head<T>(url, options));
}
/**
* 調用HTTP POST
*
* @method public
* @param url 呼叫URL
* @param data 附帶資料
* @param options 查詢選項
* @return 回傳查詢結果
*/
public post<T = any>(
url: string,
data?: any,
options?: any
): Observable<AxiosResponse<T>> {
return from(this.instance.post<T>(url, data, options));
}
/**
* 調用HTTP PUT
*
* @method public
* @param url 呼叫URL
* @param data 附帶資料
* @param options 查詢選項
* @return 回傳查詢結果
*/
public put<T = any>(
url: string,
data?: any,
options?: any
): Observable<AxiosResponse<T>> {
return from(this.instance.put<T>(url, data, options));
}
/**
* 調用HTTP PATCH
*
* @method public
* @param url 呼叫URL
* @param data 附帶資料
* @param options 查詢選項
* @return 回傳查詢結果
*/
public patch<T = any>(
url: string,
data?: any,
options?: any
): Observable<AxiosResponse<T>> {
return from(this.instance.patch<T>(url, data, options));
}
}