utils/https
import axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from '@ohos/axios';
import {ApiReq, RequestConfig} from '../type/index'
const request = axios.create({
baseURL: '127.0.0.1:6060',
})
request.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
return config;
}
)
request.interceptors.response.use(
(response: AxiosResponse) => {
if (response.data.code === 200) {
return response.data;
} else {
return Promise.reject(response.data.message);
}
},
(error: AxiosError) => {
return Promise.reject(error.message);
}
)
const changeAxios = (option:RequestConfig) =>{
const method = option.method || 'get'
if(method.toLowerCase() === 'get'){
option.params = option.data
}
return request(option)
}
const http = async<T> (option:RequestConfig):Promise<T> =>{
const res:AxiosResponse<ApiReq<T>> = await changeAxios(option)
return res.data as T
}
export default http;
type/index
import { Method } from '@ohos/axios';
export type ApiReq<T> = {
code: number,
message: string,
data: T
}
export type RequestConfig ={
url: string;
method?: Method;
params?: object;
data?: object;
}
使用
import http from '../utils/https'
import {HomeData} from '../type/Home'
export const getHomeDataApi = () =>{
return http<HomeData>({
url:'/home/info'
})
}