前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >axios封装

axios封装

作者头像
訾博ZiBo
发布2025-01-06 18:09:59
发布2025-01-06 18:09:59
7100
代码可运行
举报
运行总次数:0
代码可运行

axios

一、axios

1、安装

CDN 方式
代码语言:javascript
代码运行次数:0
复制
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
npm 方式
代码语言:javascript
代码运行次数:0
复制
npm install axios --save
yarn 方式
代码语言:javascript
代码运行次数:0
复制
yarn add axios --save
与 vue-axios 插件一起安装

vue-axios 是将 axios 集成到 Vue.js 的轻度封装,本身不能独立使用

代码语言:javascript
代码运行次数:0
复制
npm install axios vue-axios
在 main.js 中使用
代码语言:javascript
代码运行次数:0
复制
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from 'axios' // 导入 axios
import VueAxios from 'vue-axios' // 导入 vue-axios

const app = createApp(App)

app.use(store)
app.use(router)
// 注意这里要将 VueAxios 放在前面,否则报错 Maximum call stack size exceeded
app.use(VueAxios, axios)
app.mount('#app')

2、基本使用

配置封装 config-util.js
代码语言:javascript
代码运行次数:0
复制
export default {
  baseUrl: {
    // 开发环境
    dev: 'xxx',
    // 生产环境
    prod: 'xxx'
  }
}
请求封装 http-util.js

拦截器根据需要

代码语言:javascript
代码运行次数:0
复制
import axios from 'axios' // 引入axios
import config from '@/api/utils/config-util.js' // 引入配置文件

const instance = axios.create({
  baseURL: config.baseUrl.dev,
  timeout: 60000
})

// 请求拦截器
instance.interceptors.request.use(function (config) {
  console.log('发请求之前', config)
  return config
}, function (error) {
  console.log('请求错误', error)
  return Promise.reject(error)
})

// 响应拦截器
instance.interceptors.response.use(function (response) {
  console.log('得到的响应数据', response)
  return response
}, function (error) {
  console.log('响应错误', error)
  return Promise.reject(error)
})

// get请求
export function get (url, data = {}) {
  return new Promise((resolve, reject) => {
    instance
      .get(url, {
        params: data
      })
      .then((response) => {
        resolve(response)
      })
      .catch((err) => {
        reject(err)
      })
  })
}

// post请求
export function post (url, data = {}) {
  return new Promise((resolve, reject) => {
    instance.post(url, data).then(
      (response) => {
        resolve(response.data)
      },
      (err) => {
        reject(err)
      }
    )
  })
}
返回数据封装 return-util.js

个人写的,不专业

代码语言:javascript
代码运行次数:0
复制
// 工具类
// 返回请求结果
export const returnMsg = async promise => {
  try {
    const res = await promise
    if (res.status === 200) {
      return res.data
    } else {
      return 'no 200 !'
    }
  } catch (e) {
    console.log(e.name + '====' + e.message)
    if (e.message.indexOf('404') !== -1) {
      return '404'
    }
    return 'error'
  }
}
测试 api
代码语言:javascript
代码运行次数:0
复制
import { get, post } from '@/api/utils/http-util.js'
import { returnMsg } from '@/api/utils/return-util.js'

export const getHomeData = async data => await returnMsg(get('hello', data))

export const getHomeData02 = data => post('hello', data)
使用演示
代码语言:javascript
代码运行次数:0
复制
<template>
  <div>
    主页面
    <h1>{{ str }}</h1>
  </div>
</template>

<script>

import { getHomeData } from '@/api/test-api.js'
import { ref, onMounted } from 'vue'

export default {
  setup () {
    const str = ref('默认值')
    onMounted(async () => {
      const data = await getHomeData(null)
      str.value = data
    })
    return { str }
  }
}
</script>

<style>

</style>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • axios
  • 一、axios
    • 1、安装
      • CDN 方式
      • npm 方式
      • yarn 方式
      • 与 vue-axios 插件一起安装
      • 在 main.js 中使用
    • 2、基本使用
      • 配置封装 config-util.js
      • 请求封装 http-util.js
      • 返回数据封装 return-util.js
      • 测试 api
      • 使用演示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档