美文网首页
axios封装和请求响应拦截

axios封装和请求响应拦截

作者: 帝王弦 | 来源:发表于2020-07-01 17:35 被阅读0次

    安装axios

    cnpm i axios -S

    项目根目录分别新建.env.development文件和.env.production文件

    //.env.development文件
    
    #开发环境
    NODE_ENV  = 'development'
    
    # api地址
    VUE_APP_BASE_API = 'http://localhost:3000'
    
    //.env.production文件
    
    #生产环境
    NODE_ENV  = 'production'
    
    # api地址
    VUE_APP_BASE_API = 'http://线上接口地址'
    
    

    src文件夹下新建utils文件夹,建立request.js文件

    import axios from 'axios';
    
    //根据环境 给指定的接口地址
    const request = axios.create({
        baseURL: process.env.VUE_APP_BASE_API,
        timeout: 3000
    })
    
    //状态码返回
    const codeMessage = {
        201: '新建或修改数据成功。',
        202: '一个请求已经进入后台排队(异步任务)。',
        204: '删除数据成功。',
        400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
        401: '用户没有权限(令牌、用户名、密码错误)。',
        403: '用户得到授权,但是访问是被禁止的。',
        404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
        406: '请求的格式不可得。',
        410: '请求的资源被永久删除,且不会再得到的。',
        422: '当创建一个对象时,发生一个验证错误。',
        500: '服务器发生错误,请检查服务器。',
        502: '网关错误。',
        503: '服务不可用,服务器暂时过载或维护。',
        504: '网关超时。',
    };
    
    //请求拦截
    request.interceptors.request.use(
        config => {
            return config
        },
        error => {
            console.log('请求拦截错误', error) // for debug
            return Promise.reject(error)
        }
    )
    
    //响应拦截
    request.interceptors.response.use(
        response => {
            console.log('响应返回值', response.data);
            return response.data
        },
        error => {
            const { response } = error
            return Promise.reject({ "status": response.status, "message": codeMessage[response.status] })
        }
    )
    
    export default request
    
    

    封装请求接口(src文件夹下新建api文件夹,新建user.js文件)

    import request from '@/utils/request';
    
    export const getUser = () =>{
      return request({
        url:'get_user_info',
        method:'get'
      })
    }
    

    使用

    import { getUser} = '@/api/user'
    
    getUser()
    .then(res=>{
      console.log(res);
    })
    .catch(err=>{
      console.log(err);
    })
    
    

    相关文章

      网友评论

          本文标题:axios封装和请求响应拦截

          本文链接:https://www.haomeiwen.com/subject/mjrhqktx.html