赞
踩
封装一个Request的类,使得在外部可以调用此类的构造函数创建实例,创建的实例就对应axios实例,request/index.ts中代码如下:
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios"; class HDRequest { // 创建这个类的目的:每个创建出的HDRequest的实例都对应一个axios实例 // 创建实例的方法:constructor()构造实例 instance: AxiosInstance; constructor(config: AxiosRequestConfig) { this.instance = axios.create(config); } // 二次封装网络请求的方法 request(config: AxiosRequestConfig) { return this.instance.request(config); } } export default HDRequest;
基本配置信息单独写在一个文件中,config/index.ts中代码如下:
export const BASE_URL = "http://codercba.com:8000";
export const TIME_OUT = 5000;
在service/index.ts中创建一个Request类的一个实例,并配置这个实例:
import HDRequest from "./request";
import {
BASE_URL, TIME_OUT } from "./config/index";
const hdRequest = new HDRequest({
baseURL: BASE_URL,
timeout: TIME_OUT,
});
export default hdRequest;
在moduleds/home.ts中使用这个实例进行request:
import hdRequest from "..";
hdRequest
.request({
url: "/home/multidata",
})
.then((res) => {
console.log(res.data);
});
request/index.ts
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios"; class HDRequest { // 创建这个类的目的:每个创建出的HDRequest的实例都对应一个axios实例 // 创建实例的方法:constructor()构造实例 instance: AxiosInstance; constructor(config: HDRequestConfig) { this.instance = axios.create(config); // 添加全局拦截器,每个实例都有 this.instance.interceptors.request.use( (config) => { console.log("全局请求成功的拦截"); return config; }, (err) => { console.log(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。