//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. VUE 之_this.da 和 this

    作者:张艳涛 日期:2020-07-29 this用在第一层,如果在JS第3二层,要用 _this importfxx(obj) { let _this = this; let inputDOM = ...

  2. solr(CVE-2019-17558)远程命令执行

    影响版本 Apache Solr 5.x到8.2.0版本 测试 https://github.com/jas502n/CVE-2019-0193

  3. ffmpeg 任意文件读取漏洞/SSRF漏洞 (CVE-2016-1897/CVE-2016-1898)

    影响版本 在FFMpeg2.X poc http://192.168.49.2:8000/?name={%25%20for%20c%20in%20[].__class__.__base__.__sub ...

  4. 一文带你认识LPWA通信技术

    摘要:为了满足越来越多的远距离物联网设备的连接需求,LPWA应用而生. 本文分享自华为云社区<常见物联网通信技术之LPWA通信技术>,作者:爱吃面包的猫. 如果你比较关注物联网圈的话,想必 ...

  5. Mybatis学习笔记-日志

    日志工厂 如果一个数据库操作出现异常,在排错时,则需要日志 SLF4J Apache Commons Logging(COMMONS_LOGGING) LOG4J LOG4J2 JDK logging ...

  6. git分支merge冲突 error: you need to resolve your current index first

    问题: 执行切换代码分支 git checkout featrue_2019-06-24 ,报错如下: error: you need to resolve your current index fi ...

  7. java使用Selenium操作谷歌浏览器学习笔记(一)

    下载安装 在淘宝镜像https://npm.taobao.org/mirrors/chromedriver/中下载与浏览器对应的版本 查看浏览器版本 点击查看谷歌浏览器版本 在IDEA项目中导入相关j ...

  8. POI解析excel,将批量数据写入文件或数据库

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  9. net Entityframerwork+sqlite 数据库迁移配置(采坑日记)

    1首先在app.config配置写入add 1:<provider invariantName="System.Data.SQLite.EF6" type="Sys ...

  10. filebeat+ELK配置及常用操作

    背景介绍 最近工作涉及几台新服务器的日志需要接入ELK系统,配置思路如下: 使用Filebeat收集本地日志数据,Filebeat监视日志目录或特定的日志文件,再发送到消息队列到kafka,然后log ...