前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue2封装axios,axios在Vue.cli中的使用

Vue2封装axios,axios在Vue.cli中的使用

作者头像
SingYi
发布2022-07-13 21:05:28
1.1K0
发布2022-07-13 21:05:28
举报
文章被收录于专栏:Lan小站

添加http.js文件

在src目录下新增一个目录utils,并新增一个js文件http.js,用以实现axios的封装

Test
Test

编辑http.js,首先导入axios

代码语言:javascript
复制
   import axios from 'axios'

定义Http Request公共信息,用以添加授权等

代码语言:javascript
复制
   axios.interceptors.request.use(
    config => {
        let token = 'lanol'
        config.headers.token = token;
        if (config.method == 'get') {
            config.params.token = token
        }
        if (config.method == 'post') {
            config.data.token = token
        }
        return config;
    },
    error => {
        return Promise.reject(err);
    }
)

封装Get方法

代码语言:javascript
复制
export function get(uri, params = {}) {
    return new Promise((resolve, reject) => {
        axios.get(uri, {
                params: params
            })
            .then(response => {
                resolve(response.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}

封装POST方法

代码语言:javascript
复制
export function post(uri, data = {}) {
    return new Promise((resolve, reject) => {
        axios.get(uri, {
                params: params
            })
            .then(response => {
                resolve(response.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}

封装patch请求

代码语言:javascript
复制
export function patch(url, data = {}) {
    return new Promise((resolve, reject) => {
        axios.patch(url, data)
            .then(response => {
                resolve(response.data);
            }, err => {
                reject(err)
            })
    })
}

封装PUT请求

代码语言:javascript
复制
export function put(url, data = {}) {
    return new Promise((resolve, reject) => {
        axios.put(url, data)
            .then(response => {
                resolve(response.data);
            }, err => {
                reject(err)
            })
    })
}

实现跨域

代码语言:javascript
复制
const downloadUrl = url => {
    let iframe = document.createElement('iframe')
    iframe.style.display = 'none'
    iframe.src = url
    iframe.onload = function() {
        document.body.removeChild(iframe)
    }
    document.body.appendChild(iframe)
}

Main.js中引用

代码语言:javascript
复制
import axios from 'axios'
import {get,post} from '@/utils/http.js'
Vue.prototype.$ajax = axios
Vue.prototype.$post = post
Vue.prototype.$get = get

使用http.js

代码语言:javascript
复制
<template>
  <div id="app">
      {{Lan}}
  </div>
</template>

<script>
import axios from '@/utils/http.js'
export default {
  name: 'app',
  components: {
  },
  data() {
      return {
          Lan: ''
      }
  },
  mounted() {
      this.$get('https://v1.hitokoto.cn').then((response)=>{
          this.Lan = response.hitokoto
          console.log(response);
      })
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
Test
Test

参考链接https://www.cnblogs.com/zhangbs/p/9681032.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 添加http.js文件
  • Main.js中引用
  • 使用http.js
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档