vue封装axios

npm install axios

http.js

import axios from 'axios' // 引入axios

// 响应拦截器
// 响应拦截器
axios.interceptors.response.use(
  response => {
    console.log(response)
    // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
    // 否则的话抛出错误
    if (response.status === 200) {
      return Promise.resolve(response)
    } else {
      return Promise.reject(response)
    }
  },
  // 服务器状态码不是2开头的的情况
  // 这里可以跟你们的后台开发人员协商好统一的错误状态码
  // 然后根据返回的状态码进行一些操作,例如登录过期提示,错误提示等等
  // 下面列举几个常见的操作,其他需求可自行扩展
  error => {
    if (error.response.status) {
      return Promise.reject(error.response)
    }
  })

/**
 * get方法,对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get (url, params) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params: params
    }).then(res => {
      resolve(res.data)
    }).catch(err => {
      reject(err.data)
    })
  })
}

/**
 * post方法,对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post (url, params) {
  return new Promise((resolve, reject) => {
    axios.post(url, params)
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

api.js

/**
 * api接口统一管理
 */
import { get, post } from './http'
const preUrl = 'http://localhost:8081/'
export const apiAddress = p => get(preUrl + '/stuUser/list', p)

export const apiAddressa = p => post(preUrl + '/stuUser/list', p)

使用

<script>
import { apiAddress } from '@/js/api'// 导入我们的api接口
export default {
  name: 'App',
  components: {
  },
  created () {
    this.onLoad()
  },
  data () {
    return {
    }
  },
  methods: {
    // 获取数据
    onLoad () {
      // 调用api接口,并且提供了两个参数
      apiAddress({
        page: 1,
        rows: 1
      }).then(res => {
        // 获取数据成功后的其他操作
        this.$message({
          message: res,
          type: 'success'
        })
      })
    }
  }
}

</script>

 

posted @ 2021-10-10 22:02  陈扬天  阅读(70)  评论(0)    收藏  举报