Vue 的 axios二次封装

(以下的接口地址链接换成自己的写!!!)

首先在项目中src的目录下创建一个api的文件夹,在api的文件下在穿件两个文件用于二次封装

别忘了先安装axios:(在根目录下安装axios,如果安装过了,就不用看蓝色字体安装过程)

javascript 复制代码
npm install --save axios

然后在main.js中引用axios:

javascript 复制代码
// 引入axios
import {apiGet,apiPost} from './api/api'
Vue.prototype.$apiGet  = apiGet
Vue.prototype.$apiPost = apiPost

api下的第一个api.js:

javascript 复制代码
import axios from 'axios';
 
axios.defaults.timeout = 30000;
// 这个是环境测试配置,不知道可以搜索我的csdn中的Vue测试打包test
axios.defaults.baseURL = process.env.VUE_APP_API_URL

 
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
 
    //可以写if判断,提前拦截错误信息
 
    return response;
 
}, function (err) {
 
    return Promise.reject(err);
});
 
 
export function apiGet(url, params){ 
	return new Promise((resolve, reject) =>{ 
		axios.get(url, { 
			params: params,
			headers:{"token":sessionStorage.getItem('token')}
		}).then(res => {
			resolve(res.data);
		}).catch(err =>{
			reject(err.data) 
		}) 
   });
}
 
 
export function apiPost(url, params){
	return new Promise((resolve, reject) => {
			axios({
				method: 'post',
				url:url,
				data:params
			}).then(res => {
				resolve(res.data);
            }).catch(err =>{reject(err.data)})
        });
    }
 

api下的第二个https.js:

javascript 复制代码
//这个是二次封装(用到apiPost的时候把下面接口那也改成这个,用不到就把apiPost去掉)
import {apiGet,apiPost} from "./api";

export function jindutiao(){
    return new Promise((resolve)=>{
        apiGet("/index.php/index/admin/getNum").then(res=>{
            resolve(res)
})
    });
    // .catch(err=>{
    //     reject(err)
    // })


}

然后按照("jindutiao().这个是https.js中二次封装中你取的函数名字")

先引用:import {jindutiao} from "../api/https"

在使用:jindutiao().then(res=>{

console.log(res);

})

二次封装在页面上的使用以上说的以下示例代码,在script中:

javascript 复制代码
// 这个是二次封装后https.js中封装后直接写函数在这个页面使用
import {jindutiao} from "../api/https"
export default {
    data() {
      return {

      };
    },

    mounted() {

    //    这个是进度条接口
       jindutiao().then(res=>{
            // console.log(res);
            this.percentage = res.data.cssnum;
        this.percentage1 = res.data.htmlnum;
        this.percentage2 = res.data.jsnum;
        this.percentage3 = res.data.vuenum;
        }),

    },
    methods: {


    }
  }
  </script>

如果有跨域问题可以在最后在vue.config.js中添加以下代码解决用注释下面的:

javascript 复制代码
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  publicPath:'./',
  transpileDependencies: true,
  lintOnSave:false,


  // 跨域问题
  devServer: {
    proxy:{
      '/api1':{
        target:'http://47.94.4.201/',
        pathRewrite:{'^/api1':''},
        ws:true,
        changeOrigin:true,
      }
    }
  }
})
相关推荐
GDAL28 分钟前
HTML 中的 Canvas 样式设置全解
javascript
m0_5287238134 分钟前
HTML中,title和h1标签的区别是什么?
前端·html
Dark_programmer34 分钟前
html - - - - - modal弹窗出现时,页面怎么能限制滚动
前端·html
GDAL40 分钟前
HTML Canvas clip 深入全面讲解
前端·javascript·canvas
禾苗种树41 分钟前
在 Vue 3 中使用 ECharts 制作多 Y 轴折线图时,若希望 **Y 轴颜色自动匹配折线颜色**且无需手动干预,可以通过以下步骤实现:
前端·vue.js·echarts
GISer_Jing1 小时前
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
javascript·算法·排序算法
贵州数擎科技有限公司1 小时前
使用 Three.js 实现流光特效
前端·webgl
JustHappy1 小时前
「我们一起做组件库🌻」做个面包屑🥖,Vue的依赖注入实战💉(VersakitUI开发实录)
前端·javascript·github
拉不动的猪1 小时前
刷刷题16
前端·javascript·面试
kiramario1 小时前
【结束】JS如何不通过input的onInputFileChange使用本地mp4文件并播放,nextjs下放入public文件的视频用video标签无法打开
开发语言·javascript·音视频