Vue2 跨域 axios二次封装 localstorage封装

Vue2 跨域

在src同级创建 :

.env.production 内容为:

# just a flag
ENV = 'production'

# base api
VUE_APP_BASE_API = 'http://127.0.0.1:8080'

.env.development  内容为:

# 开发环境配置
ENV = 'development'
 
#设置端口号
port=8080
 
# 前端请求路径
VUE_APP_BASE_API = '/api'
 
# #后端服务器地址不要忘记添加http或https
# BASE_URL_REAR='http://127.0.0.1:8080/'

.env.test 内容为:

ENV = 'test'
NODE_ENV='test'

vue.config.js  内容为:

module.exports = {
    devServer: {
        // 默认值 为localhost 127.0.0.1
        // 端口默认为8080
        // host: "localhost",
        // port: "8080",
        // 默认有的
        proxy: {
            "/api": { // 配置你要让那些路径要跨域
                // 你可以让该路径前面添加api
                // login
                // 是后台路径
                target: "后台服务器地址", // 38

                // true 代表跨域
                changOrigin: true,
                pathRewrite: { //忽略api ,将api变成空格
                    "^/api": ""
                }
            }
        }
    }
}

axios二次封装

在src目录下创建 utils 目录  在里面创建 request.js 文件 内容为:

import axios from "axios";
import qs from 'qs'
import storage from "@/utils/storage"//后期引入localstorage的封装使用

const newAxios = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 10000,
    // headers:请求头
})
// 添加请求拦截器
newAxios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    let token = storage.get("sell_token")//将路由存进本地存储中
    if (token) {
        config.headers.Authorization = token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});
// 添加响应拦截器
newAxios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response.data;//将返回的数据过滤留下我们需要的data
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});
// 全封装
// 路径 方法 需要传输的数据
function request(url, method = "get", shuju = {}) {
    return newAxios({
        url,
        method,
        data: method == "post" ? qs.stringify(shuju) : '',
        params: method == "get" ? shuju : ''
    })
}
//全封装
function post(url, shuju) {
    return request(url, "post", shuju)
}
function get(url, shuju) {
    return request(url, "get", shuju)
}
export default {
    post, get//暴露
}

localstorage封装

在 utils 目录下创建 storage.js 文件 内容为:

const storage = window.localStorage
export default {
    set(key, value) { storage.setItem(key, JSON.stringify(value)) },//设置
    get(key) { return JSON.parse(storage.getItem(key)) },//获取
    isKey(key) { return storage.getItem(key) ? true : false },//判断
    clear() { storage.clear() },//清空
    remove(key) { storage.removeItem(key) },//清除一个
}

挂载到全局 main.js中

import storage from './utils/storage'

Vue.prototype.$storage = storage

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值