封装:

 目录结构:src/utils/request.js, 没有就自己建一个

import axios from 'axios'
import { Message } from 'element-ui' // create an axios instance
const service = axios.create({
baseURL: '/gateway', //添加于请求路径前
timeout: 5000 // request timeout
}) service.interceptors.request.use( //请求拦截
config => {
const token = window.localStorage.getItem('token')
if (token) {
config.headers['autel-token'] = token //在请求之前,像 headers 里面携带token
}
// Do something before request is sent
if (
config.applicationType !== 'JSON' &&
config.url.indexOf('community-attachment') === -1
) { //对 post 请求 或 put 请求的数据做 JSON 转换
if (config.method === 'post' || config.method === 'put') {
let _data = ''
for (const it in config.data) {
const value = config.data[it] === null ? '' : config.data[it]
_data +=
encodeURIComponent(it) + '=' + encodeURIComponent(value) + '&'
}
config.data = _data
}
}
return config
},
error => {
// Do something with request error
return Promise.reject(error)
}
) service.interceptors.response.use( //对请求回来的数据做统一错误处理
response => {
const res = response
if (res.data.code !== 1) {
Message({
message: res.data.message || '不明错误',
type: 'error',
duration: 5 * 1000
})
}
// if the custom code is not 20000, it is judged as an error.
if (res.status !== 200) {
Message({
message: res.message || '不明错误',
type: 'error',
duration: 5 * 1000
})
return Promise.reject(new Error(res.message || 'Error'))
} else {
return res
}
},
error => {
console.log('err' + error) // for debug
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
) export default service

  

  

跨域, 在 vue.config.js 里配置

module.exports = {

devServer : {
proxy: {
'/gateway': { //由于我们上面在请求头里有添加 gatwat 所以能拦截
target: 'http://autel-cloud-gateway.dev.com', // 接口域名
// secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, // 是否跨域
pathRewrite: {
'^/gateway': ''
}
}
},
configureWebpack: {
resolve: {
alias: {
'@': resolve('src') //vue 代码里出现 @ ,表示 src 目录
}
}
}
}
}

  

 使用

    src/api/menu.js

import request from '@/utils/request'

//添加菜单
export function addOrCompileMenu(data) {
return request({
url: '/api/admin/menu/saveMenu',
method: 'post',
applicationType: 'JSON', //这一段表示,是post 请求,就将 请求参数转换成 JSON 格式
data
})
}

  src/views/menu.vue

import { getMenuList } from '@/api/menu'
methods: {
getMenuList({}).then(res => {
if (res.status === 200) {
this.list = res.data.data.menuVoList
}
})
}

  

 

vue3.0+axios 跨域+封装的更多相关文章

  1. vue-cli 3.0 axios 跨域请求代理配置及生产环境 baseUrl 配置

    1. 开发环境跨域配置 在 vue.config.js 文件中: module.exports = { runtimeCompiler: true, publicPath: '/', // 设置打包文 ...

  2. vue-cli 3.0之跨域请求代理配置及axios路径配置

    vue-cli 3.0之跨域请求代理配置及axios路径配置 问题:在前后端分离的跨域请求中,报跨域问题 配置: vue.config.js: module.exports = { runtimeCo ...

  3. vue-cli axios跨域 + 反向代理模拟http请求host+referer

    axios跨域 配置config->index.js中的proxyTable,内容如下: proxyTable: { // 跨域请求 '/api': { // 注意此处可设置为 '*' 代表不限 ...

  4. $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)

    1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...

  5. 使用ajax请求接口,跨域后cookie无法设置,全局配置ajax;及使用axios跨域后cookie无法设置,全局配置axios

    问题一: 使用ajax/axios跨域请求接口,后端放行了,能够正常获取数据,但是cookie设置不进去,后端登录session判断失效 ajax解决办法: //设置ajax属性 crossDomai ...

  6. JS window.name跨域封装

    JS window.name 跨域封装 function CrossDomainName(target, agent, callback, security) { if (typeof target ...

  7. axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数

    1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...

  8. asp.net web api2.0 ajax跨域解决方案

    asp.net web api2.0 ajax跨域解决方案 Web Api的优缺点就不说了,直接说怎么跨域,我搜了一下,主要是有两种.  一,ASP.NET Web API支持JSONP,分两种 1, ...

  9. Vue用axios跨域访问数据

    Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...

随机推荐

  1. 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/yxVYRL 可交互视频 此视频是可 ...

  2. 关于 InnoDB 锁的超全总结

    有点全的 InnoDB 锁 几个月之前,开始深入学习 MySQL .说起数据库,并发控制是其中很重要的一部分.于是,就这样开起了 MySQL 锁的学习,随着学习的深入,发现想要更好的理解锁,需要了解 ...

  3. 峰哥说技术:09-Spring Boot整合JSP视图

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 09  峰哥说技术:Spring Boot整合JSP视图 一般来说我们很少推荐大家在Spring boot ...

  4. C# 存储相同键多个值的Dictionary

    涉及到两个问题: 一.访问磁盘中文件夹.文件夹下面的文件夹 先看一下磁盘文件夹结构 C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018.2019, 子文件下201 ...

  5. Mongo Shell CRUD操作

    1.创建并使用test数据库 use test; 此时使用show dbs;命令查看当前存在的数据库是查看不到test数据库的,只有当test中insert数据之后才能查看到test数据库 删除数据库 ...

  6. 负载均衡框架 ribbon 一

    Ribbon开源地址:https://github.com/Netflix/ribbon/wiki/Getting-Started 1.Ribbon简介 负载均衡框架,支持可插拔式的负载均衡规则 支持 ...

  7. rest framework serializer

    串行器 扩大串行的用处是什么,我们想地址.然而,这不是一个简单的问题,它会采取一些严重的设计工作. -罗素基思-马吉,Django的用户组 串行器允许诸如查询集和模型实例复杂的数据转换为原生的Pyth ...

  8. 数据挖掘入门系列教程(四)之基于scikit-lean实现决策树

    目录 数据挖掘入门系列教程(四)之基于scikit-lean决策树处理Iris 加载数据集 数据特征 训练 随机森林 调参工程师 结尾 数据挖掘入门系列教程(四)之基于scikit-lean决策树处理 ...

  9. CSS每日学习笔记(0)

    7.29.2019 1. CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解 ...

  10. 测试工程师需要了解的shell变量知识

    欢迎访问个人博客 什么是变量 本地变量:手动定义的,在当前系统的某个环境下才能生效,作用范围小 普通变量: 单引号:原字符输出,变量名='变量值' ➜ shell name='tom' ➜ shell ...