编写 request.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| import type { AxiosError, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig, } from "axios"; import axios from "axios";
const request = axios.create({ baseURL: "http://{需要请求的服务器地址}", timeout: 60 * 1000, params: {}, });
request.interceptors.request.use( function (config: InternalAxiosRequestConfig) { return config; }, function (error: any) { console.log(error); return Promise.reject(error); } );
request.interceptors.response.use( function (response: AxiosResponse) { return response; }, function (error: AxiosError<{ code: number; msg: string; time: number }>) { return Promise.reject(error); } );
export interface Response<T = any> { code: number; data: T; msg: string; time: number; }
const req = async <T>(config: AxiosRequestConfig) => { const res = await request(config); return res.data as T; }; export default req;
|
编写接口函数
示例 api/hello.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import type { Response } from "@/lib/request"; import req from "@/lib/request";
export type HelloApiResp = { msg: string; };
export const sayHello = (params: { name: string } = { name: "world" }) => { return req<Response<HelloApiResp>>({ url: "/api/hello", method: "GET", params, }); };
|
使用示例
import { sayHello } from "@/api/demo";
sayHello({ name: "x" }).then((res) => {
console.log(res.msg);
});