第70讲axios后端请求工具类封装

axios工具类封装:

bash 复制代码
// 引入axios
import axios from 'axios';

// 创建axios实例
const httpService = axios.create({
  // url前缀-'http:xxx.xxx'
  // baseURL: process.env.BASE_API, // 需自定义
  baseURL:'http://localhost:80/',
  // 请求超时时间
  timeout: 3000 // 需自定义
});

//添加请求和响应拦截器
// 添加请求拦截器
httpService.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  config.headers.token=window.sessionStorage.getItem('token');
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
httpService.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

/*网络请求部分*/

/*
 *  get请求
 *  url:请求地址
 *  params:参数
 * */
export function get(url, params = {}) {
  return new Promise((resolve, reject) => {
    httpService({
      url: url,
      method: 'get',
      params: params
    }).then(response => {
      resolve(response);
    }).catch(error => {
      reject(error);
    });
  });
}

/*
 *  post请求
 *  url:请求地址
 *  params:参数
 * */
export function post(url, params = {}) {
  return new Promise((resolve, reject) => {
    httpService({
      url: url,
      method: 'post',
      data: params
    }).then(response => {
      console.log(response)
      resolve(response);
    }).catch(error => {
      console.log(error)
      reject(error);
    });
  });
}

/*
 *  文件上传
 *  url:请求地址
 *  params:参数
 * */
export function fileUpload(url, params = {}) {
  return new Promise((resolve, reject) => {
    httpService({
      url: url,
      method: 'post',
      data: params,
      headers: { 'Content-Type': 'multipart/form-data' }
    }).then(response => {
      resolve(response);
    }).catch(error => {
      reject(error);
    });
  });
}

export default {
  get,
  post,
  fileUpload
}

配置@作为根目录

vue.config.js里面配置:

bash 复制代码
  configureWebpack:{
      resolve:{
          alias:{
              '@':resolve('src')
          }
      }
  },

导入axios工具类;

bash 复制代码
import axiosUtil from '@/util/axios'

改下:

bash 复制代码
try{
        let result=await axiosUtil.post("adminLogin",form.value);
        let data=result.data;
        if(data.code==0){
          ElMessage.success("登录成功");
          window.sessionStorage.setItem("token",data.token);
        }else{
          ElMessage.error(data.msg);
        }
      }catch(err){
        console.log("error:"+err);
        ElMessage.error("系统运行出错,请联系管理员");
      }
相关推荐
小宁爱Python20 小时前
Django Web 开发系列(二):视图进阶、快捷函数与请求响应处理
前端·django·sqlite
fox_20 小时前
深入理解React中的不可变性:原理、价值与实践
前端·react.js
武天20 小时前
Vue项目中有封装过axios吗?怎么封装的?
vue.js
Github项目推荐20 小时前
你的错误处理一团糟-是时候修复它了-🛠️
前端·后端
Code小翊20 小时前
C语言bsearch的使用
java·c语言·前端
云枫晖20 小时前
Webapck系列-初识Webpack
前端·javascript
慧一居士20 小时前
HTML5 功能介绍,使用场景,对应功能点完整使用示例
前端
海在掘金6112720 小时前
告别“undefined is not a function”:TS如何让你的函数调用更安心
前端
云中雾丽20 小时前
Flutter中Stream的各种使用场景和实现方式
前端
CptW20 小时前
第1篇(Ref):搞定 Vue3 Reactivity 响应式源码
前端·面试