欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue axios的封装大全

程序员文章站 2022-04-10 09:41:29
1.安装npm install axios --save2.新建http.js,封装拦截器以及多种请求方式import axios from 'axios';import { Message } from 'element-ui';// 请求拦截器axios.interceptors.request.use( config => { //发送请求前需要做什么,一般检查token return config; }, error => { // 对...

1.安装

npm install axios --save

2.新建http.js,封装拦截器以及多种请求方式

import axios from 'axios';
import { Message } from 'element-ui';

// 请求拦截器
axios.interceptors.request.use(
  config => {
    //发送请求前需要做什么,一般检查token
    return config;
  },

  error => {
   // 对请求错误做些什么
    return Promise.reject(error);
  }
)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    // 对响应数据做点什么,一般是判断状态码,进行一些逻辑处理
    return response;
  },
  error => {
    // 对响应错误做点什么
    return Promise.reject(error) ;
  };
)

//GET请求
export const $get = function (url, params) {
  return new Promise((resolve, reject) => {
    axios({
      method: 'get',//请求方式
      url: url,         //请求url
      headers:...   //请求头设置,
      params,      //请求参数
      baseURL: ...//基础地址,将自动加在 `url` 前面
    }).then(res => {
      resolve(res)
    }).catch(error => {
      reject(error)
    })
  })
}

//POST请求
export const $post = function (url, param) {
  return new Promise((resolve, reject) => {
    axios({
      method: 'post',
      url: url,
      headers: ...,
      data: param ? param : "", //数据体
      baseURL: ...
    }).then(res => {
      resolve(res)
    }).catch(error => {
      reject(error)
    })
  })
}

//DELETE请求
export const $delete = function (url, params) {
  return new Promise((resolve, reject) => {
    axios({
      method: 'delete',
      url: url,
      headers: ...,
      params,
      baseURL: ...
    }).then(res => {
      resolve(res)
    }).catch(error => {
      reject(error)
    })
  })
}

//PUT请求
export const $put = function (url, params) {
  return new Promise((resolve, reject) => {
    axios({
      method: 'put',
      url: url,
      headers: ...,
      data: params ? params : "",
      baseURL: ...
    }).then(res => {
      resolve(res)
    }).catch(error => {
      reject(error)
    })
  })
}

3.接口的封装—新建user.js

//导入请求方式
import {
  $get,
  $post,
  $update,
  $delete
} from '../http';

//获取用户信息接口
const getUser = data => {
  return $get('/api/getUserInfo', data);
};

//其他接口类似
....
....
....

//导出接口
export default {
getUser,
...,
...
}

4.封装所有接口文件—创建index.js

//导入接口文件
import user from './user'

//导出
export default {
  user,
  ...,
  ...
}

5.axios的所有内容封装(该index.js即为下图目录结构选中的js文件)
vue axios的封装大全
目录结构
vue axios的封装大全
6.在组件中的使用

methods:{
    //方法的调用,传入数据
    getUser(){
         this.$api.user.getUser({userId:100010})
            .then(
                res=>{
                //请求结果,进行相应的逻辑处理
                },
                error=>{
                //请求失败后的逻辑处理
                })
      }
}

7 完

本文地址:https://blog.csdn.net/weixin_49257048/article/details/107467751

相关标签: vue json