axios的封装
-
src文件夹下新建http文件夹,用来放网络请求相关的文件
-
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;
-
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
前后端联调思路
-
写完视图函数,使用postman进行接口测试,保证后端接口没有问题
-
在vue中写页面,向后端发送数据