//src 底下建立 api 文件夹
// api 文件夹下建立 request,js 文件,文件内容复制下面这段代码即可
 
/**
 * ajax请求配置
 */
import axios from 'axios'
import { Message } from 'element-ui'
// axios默认配置
axios.defaults.timeout = 10000 // 超时时间
// 整理数据 --- 可要可不要,这个问题不大,无所谓
// axios.defaults.transformRequest = function(data) {
//     data = JSON.stringify(data)
//     return data
// }
// 定义请求头 使用JSON格式
axios.defaults.baseURL = 'apis/api/' 
axios.defaults.headers.post //post 要单独设置,下面的 api.js 会说明
axios.defaults.headers.get['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.put['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.delete['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.patch['Content-Type'] = 'application/json;charSet=UTF-8'
// 路由请求拦截
axios.interceptors.request.use(
    config => {
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded; multipart/form-data'
        config.headers['Authorization'] = 'Bearer '+ window.localStorage.getItem('access_token')
        config.headers['Accept'] = 'application/json'
        return config
    },
    error => {
        return Promise.reject(error.response)
    }
)
// 路由响应拦截
axios.interceptors.response.use(
    response => {
        if(response.status === 401){ // token过期
            Message.error(response.data.errDesc)
            window.localStorage.removeItem('access_token');
            router.replace({
                path: '/', //返回登录页重新登录
                query: {
                    redirect: router.currentRoute.fullPath
                }
            })
        }else{
            return response.data
        }
    },
    error => {
        return Promise.reject(error.response) // 返回接口返回的错误信息
    }
)
export default axios
 
 
// 和 request.js 同层 建立 api.js(由于是一个人开发,所以只建立一个 api.js,可以根据自己需要把 request.js 导入到自己需要的 api.js 的文件中去)
//统一封装api请求
import request from '../api/request'
import axios from 'axios' // 可以自行手写的 axios 请求
import qs from 'qs' // 可以用于转换 post 需要的 fromData 格式
import url from 'postcss-url';
 
// 导出接口
export function 接口名字( 传给后端的接口参数 ) {
    return request({
        url: '  ',//接口路径
        method: 'post', //请求方式
        
        //转换数据格式 --- 这段代码很关键,用于转换post 的fromData 格式的
        transformRequest: [
            function(data) {
                let ret = '';
                for (let it in data) {
                    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
                }
                return ret;
            }
        ],

  // 头部必须设置是 fromData 格式,不然会报错

        headers:{

    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
  // 接口数据 - 上面括号传过来的数据
        data : {
            
        }
    })
}
 
 
// vue 文件中的使用
script 中
import { 上面定义的接口名字 } from ' 自己定义的 api.js 的文件路径 '
 
export default{
  methods: {
    
    

自己定义一个方法名字用于调用(传给后台的参数: 例如 : 分页,搜索框 ){
    
            api.js 的 方法名字 ( 这里是传入 api.js 的方法中的参数 ).then(res=>{
                  接收数据
              }).catch(()=>{
                  this.$message.error(" 数据发生错误的时候的提示 ")
              })
          },
 
  }
}
 
 
 
 
 

vue 封装 axios 和 各类的请求,以及引入 .vue 文件中使用的更多相关文章

  1. Vue 封装axios(四种请求)及相关介绍(十三)

    Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...

  2. Vue在单独引入js文件中使用ElementUI的组件

    Vue在单独引入js文件中使用ElementUI的组件 问题场景: 我想在vue中的js文件中使用elementUI中的组件,因为我在main.js中引入了element包和它的css,并挂载到了全局 ...

  3. vue 封装axios以及使用中间代理 proxy

    为什么需要封装呢?主要是为了更好管理项目以及增加复用性 1.首先在src文件夹下创建api文件夹 . utils文件夹 . server文件夹 api:创建一个index.js文件   用来存放接口地 ...

  4. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  5. 封装的方法--读取任何路径下的properties文件中的值

    概述:我们在做项目时,经常需要从某个properties文件中读取properties文件中的值.现在我封装了一下方法,直接读取配置文件中的值. 代码如下所示: /** * Created by qi ...

  6. vue封装axios

    一.安装axios npm install --save axios 二.在src下面创建文件夹api=>api.js(接口集合)+http.js(封装的请求) 三.在main.js中引用api ...

  7. vue封装axios方法推荐)

    目录结构: api.js export default { myTopic: '/api/subscribe-data/post/cat' } request.js import axios from ...

  8. vue 使用axios 出现跨域请求的两种解决方法

    最近在使用vue axios发送请求,结果出现跨域问题,网上查了好多,发现有好几种结局方案. 1:服务器端设置跨域 header(“Access-Control-Allow-Origin:*”); h ...

  9. vue项目 安装和配置sass & main.js引入scss文件报错

    通过npm 安装 cnpm install --save-dev sass-loader cnpm install --save-dev node-sass 在build文件夹下的webpack.ba ...

随机推荐

  1. ThinkPHP5 SQL注入漏洞 && 敏感信息泄露

    访问看到用户名被显示了 http://192.168.49.2/index.php?ids[]=1&ids[]=2 访问http://your-ip/index.php?ids[0,updat ...

  2. 大数据学习(19)—— Flume环境搭建

    系统要求 Java1.8或以上 内存要足够大 硬盘足够大 Agent对源和目的要有读写权限 Flume部署 我这8G内存的电脑之前搭建Hadoop.Hive和HBase已经苟延残喘了,怀疑会卡死,硬着 ...

  3. Mybatis学习笔记-CRUD

    namespace namesapce中的包名需与Dao/Mapper接口的包名一致 SELCET 选择,查询语句 id:对应namespace中的方法: resultType:Sql语句执行的返回值 ...

  4. SpringBoot系列——动态定时任务

    前言 定时器是我们项目中经常会用到的,SpringBoot使用@Scheduled注解可以快速启用一个简单的定时器(详情请看我们之前的博客<SpringBoot系列--定时器>),然而这种 ...

  5. JavaEE精英进阶课学习笔记《博学谷》

    JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...

  6. CreatFile打开驱动失败

    使用  CreateFile(DRIVER_PATH, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_AT ...

  7. 案例分享:Qt政务标签设计器,标签排版软件定制与打印

    需求   1.标签设计器:  2.具备文字排版功能:  3.支持六种排版格式:  4.排版后可以输出打印(demo中不包含):  5.排版后可以输出标签的指定协议文本FBD格式:  6.可以调整对应标 ...

  8. 华为应用市场更新APP多次被拒

    最近公司的APP发布了新版本,只进行了线上bug的修复,基本没改什么主体业务功能.各大应用市场都顺利更新上架,但是国货之光华为,被闷了几次.拒来拒去,就是那些反复的内容.内容一般如下: 经检测发现,您 ...

  9. 解决tomcat7中request会对中文重新编码,导致后台接收到为encode编码后参数问题

    package xxx; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.ut ...

  10. 常见web中间件漏洞(五)weblogic漏洞

    继续整理有关中间件漏洞思路(仅做简单思路整理,不是复现,复现请参考大佬们的长篇好文,会在文章中列举部分操作) WebLogic是Oracle公司出品的一个application server,确切的说 ...