use-api-vue
Version:
AJAX request for Vue 3 using global configuration
59 lines (53 loc) • 3.98 kB
TypeScript
import * as axiosBaseTypes from 'axios';
import { AxiosError, AxiosRequestConfig } from 'axios';
import * as vue from 'vue';
import { onUnmounted } from 'vue';
type ApiResponse<Data = any, DataParams = any> = axiosBaseTypes.AxiosResponse<Data, DataParams>;
type ApiRequestConfig<DataParams = any> = axiosBaseTypes.AxiosRequestConfig<DataParams>;
interface ConfigOptions extends ApiRequestConfig {
onCancelCallback?: typeof onUnmounted;
}
interface KeyValue {
[key: string]: string | number | undefined;
}
type requestConfigType = Omit<ApiRequestConfig, 'url' | 'method' | 'cancelToken' | 'params' | 'data' | 'paramsSerializer'>;
interface ApiClientConfig {
extraPostData?: (options: ApiRequestConfig) => KeyValue;
onError?: (error: unknown, options: ApiRequestConfig) => void;
getError?: (error: unknown, options: ApiRequestConfig) => unknown;
requestConfig?: requestConfigType;
}
declare const axios: axiosBaseTypes.AxiosStatic;
declare const axiosTypes: typeof axiosBaseTypes;
declare const useApiProvider: (params: ApiClientConfig, id?: string) => void;
declare const useApiClient: (id?: string) => ApiClientConfig;
declare const getArrayBufferError: <Data = any, DataConfig = any>(error: AxiosError<Data, DataConfig>) => AxiosError<Data, DataConfig>;
declare const useGet: (config?: ConfigOptions, id?: string) => <Data = unknown, Params = unknown>(url: string, params?: Params | undefined, config?: ApiRequestConfig<Params> | undefined) => Promise<ApiResponse<Data, Params>>;
declare const usePost: (config?: ConfigOptions, id?: string) => <Data = unknown, Params = unknown>(url: string, params?: Params | undefined, config?: ApiRequestConfig<Params> | undefined) => Promise<ApiResponse<Data, Params>>;
declare const usePut: (config?: ConfigOptions, id?: string) => <Data = unknown, Params = unknown>(url: string, params?: Params | undefined, config?: ApiRequestConfig<Params> | undefined) => Promise<ApiResponse<Data, Params>>;
declare const useDelete: (config?: ConfigOptions, id?: string) => <Data = unknown, Params = unknown>(url: string, params?: Params | undefined, config?: ApiRequestConfig<Params> | undefined) => Promise<ApiResponse<Data, Params>>;
declare const useGetRef: <Data = unknown, Params = unknown, Error_1 = unknown>(config?: ConfigOptions, id?: string) => {
data: vue.Ref<ApiResponse<Data, Params> | undefined>;
error: vue.Ref<Error_1 | undefined>;
loading: vue.Ref<boolean>;
send: (url: string, params?: Params | undefined, axiosConfig?: AxiosRequestConfig) => Promise<Error_1 | ApiResponse<Data, Params>>;
};
declare const usePostRef: <Data = unknown, Params = unknown, Error_1 = unknown>(config?: ConfigOptions, id?: string) => {
data: vue.Ref<ApiResponse<Data, Params> | undefined>;
error: vue.Ref<Error_1 | undefined>;
loading: vue.Ref<boolean>;
send: (url: string, params?: Params | undefined, axiosConfig?: AxiosRequestConfig) => Promise<Error_1 | ApiResponse<Data, Params>>;
};
declare const usePutRef: <Data = unknown, Params = unknown, Error_1 = unknown>(config?: ConfigOptions, id?: string) => {
data: vue.Ref<ApiResponse<Data, Params> | undefined>;
error: vue.Ref<Error_1 | undefined>;
loading: vue.Ref<boolean>;
send: (url: string, params?: Params | undefined, axiosConfig?: AxiosRequestConfig) => Promise<Error_1 | ApiResponse<Data, Params>>;
};
declare const useDeleteRef: <Data = unknown, Params = unknown, Error_1 = unknown>(config?: ConfigOptions, id?: string) => {
data: vue.Ref<ApiResponse<Data, Params> | undefined>;
error: vue.Ref<Error_1 | undefined>;
loading: vue.Ref<boolean>;
send: (url: string, params?: Params | undefined, axiosConfig?: AxiosRequestConfig) => Promise<Error_1 | ApiResponse<Data, Params>>;
};
export { ApiClientConfig, ApiRequestConfig, ApiResponse, ConfigOptions, axios, axiosTypes, getArrayBufferError, useApiClient, useApiProvider, useDelete, useDeleteRef, useGet, useGetRef, usePost, usePostRef, usePut, usePutRef };