0
点赞
收藏
分享

微信扫一扫

vue接口的封装

1.配置完成router后 ,可以在router内新建request.js文件

import axios from 'axios'

import { MessageBox, Message } from 'element-ui'

// import store from '@/store'

// import { getToken } from '@/utils/auth'

//创建axios 实例

const service = axios.create({

    // baseURL: process.env.VUE_APP_BASE_API, // url = baseURL + request url

    // withCredentials: true, // 跨域请求时发送cookie

    // timeout: 5000 // 请求超时时间

})

// request interceptor

service.interceptors.request.use(

    config => {

        // do something before request is sent

        // 在发送请求之前做些什么

        // if (store.getters.token) {

        //   // 请求携带令牌token

        //   // [ token ] 是接口中定义好的字段

        //   // please modify it according to the actual situation

        //   config.headers['token'] = getToken()

        // }

        return config

    },

    error => {

        // 请求报错时的操作

        // //console.log(error) // for debug

        return Promise.reject(error)

    }

)

// response interceptor

service.interceptors.response.use(

    response => {

        const res = response.data

            // 如果自定义代码不是200,则判断为错误

        if (res.code !== 200) {

            Message({

                    message: res.message || 'Error',

                    type: 'error',

                    duration: 5 * 1000

                })

                // 508: 非法token; 512: 其他客户端已登录; 514: Token 已过期;

                // 508:令牌非法 ; 512: 其他客户端已登录; 514: 令牌失效;

            if (res.code === 508 || res.code === 512 || res.code === 514) {

                // 重新登录

                MessageBox.confirm('Y您已注销登录,可以点击取消留在此页面或者重新登录!', '确认退出', {

                    confirmButtonText: '重新登录',

                    cancelButtonText: '取消',

                    type: 'warning'

                }).then(() => {

                    // store.dispatch('user/resetToken').then(() => {

                    //   location.reload()

                    // })

                })

            }

            return Promise.reject(new Error(res.message || 'Error'))

        } else {

            return res

        }

    },

    error => {

        // //console.log('err' + error)

        Message({

            message: error.message,

            type: 'error',

            duration: 5 * 1000

        })

        return Promise.reject(error)

    }

)

export default service

2.在根目录建vue.config.is

module.exports = {

  // lintOnSave: false,

  devServer:{

    host:'localhost',

    port:8080,

    proxy:{

      '/api':{

        target:'http://foods.1demo.cc',//要跨域的域名

        changeOrigin:true//是否开启跨域

      }

    }

  }

}

3.新建api文件,在api文件内部建index.js

这里是接口存放调用的地方

import request from '@/router/request'

// 头部

export function Header() {

  return request({

    url: '/api/head/head',

    method: 'get',

  })

}

// 首页

export function index() {

  return request({

    url: '/api/index/index',

    method: 'get',

  })

}

举报

相关推荐

0 条评论