IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue3中封装Axios及统一验证返回结果 -> 正文阅读

[JavaScript知识库]Vue3中封装Axios及统一验证返回结果

一,下载及安装vue3及axios

1,vue-cli 安装vue3 (默认已会) 官网地址:vue-cli
2,安装axios 官网地址:axios

$ npm install axios

二,配置文件

在src文件目录下新建一个文件夹 名为api,在新建的文件夹中新建 4个js文件,本人命名为 api.js、axios.js、config.js、verify.js(此为统一验证js)
在 public中新建config.js 文件 并在 index.html 中引入该文件,做统一配置地址处理
如图所示:文件目录

三,代码

1,public 文件夹中 config.js

((W) => {
    W.configParams = {}
    // 请求的公共地址
    configParams.baseURL = "http://xxxxx:8090/xxxx"; // 自己 
    // configParams.baseURL = "http://xxxxx:8090/xxxx"; // 周 
})(window)

2,public 文件夹中 index.html

<script src="./config.js"></script>

3,在 axios.js 中

import axios from 'axios'
// import router from "@/router";
import store from '@/store/index'
// import {
//     Toast
// } from "vant";
const baseURL = configParams.baseURL
const instance = axios.create({
    baseURL: baseURL,
    timeout: 1000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'token': ''
    },
});
// 请求之前拦截
instance.interceptors.request.use(config => {
    // 赋值token 在vuex 中已经定义好
    // config.headers.token = store.state.token
    if (config.method != "get") {
        // 对data参数处理
        let formdata = new FormData();
        Object.keys(config.data).forEach(key => {
            formdata.append(key, config.data[key]);
        })
        config.data = formdata;
    } else {
        config.data = {}
    }
    return config
})
// 请求响应拦截
instance.interceptors.response.use(config => {
    return config
})

export default instance

4,config.js

// 每个接口的名字维护 若接口过的 可分文件引入
export default {
    // 查询获取用户信息 
    getUserInfo: {
        url: `/userInfo/getUserInfo`,
        method: 'post'
    },
    // 刷新token 
    refreshUserToken: {
        url: `/userInfo/refreshUserToken`,
        method: 'post'
    },
}

5,api,js 接口数据请求整合

import request from "./axios"
import baseConfig from "./config"
export function API(apikey, param) {
    let apk = baseConfig[apikey]
    if (apk) {
        return request({
            ...apk,
            params: apk.method == "get" ? param : '',
            data: apk.method == "get" ? "" : param
        })
    } else {
        return {
            code: '404',
            desc: `没有找到[${apikey}]对应的请求配置`
        }
    }
}

6,verify,js 请求验证的 可不用自行定夺 请自己编辑如何验证

//import { Toast } from "vant"
export function verify(res) {
    // console.log(res)
    if (res.data.status == 0) {
        // Toast.success("sss")
        return true
    } else {
        //Toast.fail(res.data.msg)
        return false
    }
}

四,在main.js中添加代码

import { createApp } from 'vue'
import { API } from './api/api';
import { verify } from './api/verify';
const Vue = createApp(App);
Vue.config.globalProperties.$HTTP = API;
Vue.config.globalProperties.$verify = verify;
Vue.mount('#app')

注:Vue3.x不支持 vue2中直接Vue.prototype. H T T P 这 种 方 式 来 挂 载 全 局 对 象 , 如 使 用 v u e 2 封 装 可 用 这 种 方 式 , 其 它 文 件 代 码 不 用 动 v u e 3 中 使 用 V u e . c o n f i g . g l o b a l P r o p e r t i e s . HTTP 这种方式来挂载全局对象,如使用vue2封装可用这种方式,其它文件代码不用动 vue3 中使用 Vue.config.globalProperties. HTTP使vue2vue3使Vue.config.globalProperties.HTTP

五,在页面中应用

在需要调用接口的页面中直接使用 例如:在index.vue中应用
注: 引用接口的函数方法 要使用 async await

<template>
  <router-view /> 
</template>

<script> 
export default { 
  data() {
    return {};
  },

  mounted() {
    this.getUserInfo();
  },
  methods: { 
    async getUserInfo(code=123456) {
      let res = await this.$HTTP("getUserInfo", { code: code });
      if (this.$verify(res)) {
        console.log(res.data);
      }
    }, 
  },
};
</script>

<style>
</style>

到此结束 有不足或错误的地方 请指出 谢谢
可加Q群联系:805371278

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:22:38  更:2022-03-10 22:23:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:48:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码