axios的封装

axios的封装

  1. src文件夹下新建http文件夹,用来放网络请求相关的文件

  2. src/http文件夹下,创建index.js文件,对axios进行封装

    const { data } = require('autoprefixer');
    const axios = require('axios');
    const { error } = require('shelljs');
    
    axios.defaults.baseURL = 'http://192.168.56.100:8888' //vue请求后端地址
    
    axios.defaults.timeout = 10000; // 超时设置
    
    axios.defaults.withCredentials = true; // 跨域访问需要发送cookie时,一定要加上
    
    
    axios.defaults.headers['Content-Type'] = 'application/json'; //设置默认提交json
    axios.defaults.transformRequest = data => JSON.stringify(data);//把数据对象序列化成json字符串

    // 对请求拦截器,和响应拦截器进行封装
    
    /*
    请求拦截器,发送请求前需要调用这个函数
    当没有登录时,直接跳转到登录页
    请求发送前把token获取,设置到header中
    */
     
     
    axios.interceptors.request.use(config=>{
        //从localStorage中获取token
        let token = localStorage.getItem('token');
        // 如果有token,就把token设置到请求头中Authorization字段中
        token && (config.headers.Authorzation = token);
        return config;
    },error => {
        return Promise.reject(error)
    });
    
    /*
    响应拦截器,当后端返回数据给vue时,会调用这个函数
    
    每次返回403错误时,跳转到login
    */
    axios.interceptors.response.use(response =>{
        //当响应码是2xx的情况时,进入这里
        return response.data;
    },error =>{
        //当响应码不是2xx的情况是,进入这里
        return error
    });
    
    
    //使用上面的axios对象,对get和post请求进行封装
    
    /*
    get方法,对应get请求
    @param {String} url [请求的url地址]
    @param {Object} params [请求时携带的参数]
    */
    export function get(url,params,headers){
        return new Promise((resolve,reject) =>{
            axios.get(url,{params,headers}).then(res=>{
                resolve(res.data.ResulObj)
            }).catch(err =>{
                reject(err.data)
            })
        })
    }
    
    
    /*
    post方法,对应post请求
    @param {String} url [请求的url地址]
    @param {Object} params [请求时携带的参数]
    */
    export function post(url,params,headers){
        return new Promise((resolve,reject) =>{
            axios.post(url,params,headers).then(res=>{
                resolve(res.data)
            }).catch(err =>{
                reject(err.data)
            })
        })
    }
    
    //一定要导出函数
    export default axios;
    
  3. src/http目录下创建apis.js文件,用来写接口地址列表

    import { get,post } from './index'
    
    export const login = (params,headers) => post("/user/login/",params,headers)
    

CORS跨域

#允许所有源来跨域
CORS_ORIGIN_ALLOW_ALL =True

#或者设置跨域请求白名单
# CORS_ORIGIN_WHITELIST = (
#     'http://127.0.0.1:8080',
#     'http://localhost:8080',
# )

#允许携带cookie
CORS_ALLOW_CREDENTALS = True

前后端联调思路

  1. 写完视图函数,使用postman进行接口测试,保证后端接口没有问题

  2. 在vue中写页面,向后端发送数据

原文地址:https://www.cnblogs.com/qx1996liu/p/13892978.html