首頁 > web前端 > Vue.js > 主體

vue3如何封裝axios

WBOY
發布: 2023-05-30 15:14:56
轉載
1842 人瀏覽過

简介

axios是一个基于promise的网络请求库,管理后台使用的场景通常 获取后端api数据,然后交给页面渲染

还是在前面的示例项目上操作,安装axios最新0.27.2版本

cd HELLO-WORLD
npm install axios
登入後複製

openapi

在网上找到一个开放的openapi地址,免费且无需认证就可以使用

方便开发时模拟接口数据,但不能使用在生产环境中

该openapi返回json数据,比较符合我们的需求, 这里直接写死到axios配置中

基本配置

axios配置项较多,这里只配置基本功能

在src目录下创建utils文件夹,然后创建request.js文件

import axios from 'axios'

//自动加在url前面
axios.defaults.baseURL = 'https://api.apiopen.top'
//超时时间 
axios.defaults.timeout = 5000
//跨域凭证
axios.defaults.withCredentials = false

//响应和请求 拦截器配置

export default axios
登入後複製

拦截器

axios拦截器分为 请求拦截和响应拦截

请求拦截器可以在请求时设置token,header等等

响应拦截器可以在收到数据后进行逻辑判断

请求拦截器配置

axios.interceptors.request.use(config => {
    console.log(config)
    return config
}, error => {
    Promise.reject(error)
})
登入後複製

响应拦截器配置

axios.interceptors.response.use(res => {
    if (typeof res.data !== 'object') {
        ElMessage.error('返回数据不是对象!')
        return Promise.reject(res)
    }
    if (res.data.code !== 200 ){
        ElMessage.error('返回码不等于200')
    }
    return res.data
}, error => {
    ElMessage.error('网络异常')
    Promise.reject(error)
})
登入後複製

api请求

在src目录创建api文件夹,在api目录中创建openapi.js 文件

创建一个getImages方法来 获取 openapi的图片数据

该方法指定请求get方法,传入url和参数

import request from '../utils/request'

export function getImages(params) {
    return request.get('/api/getImages', { params })
}
登入後複製

数据渲染

在components目录创建一个table.vue的组件,路由配置见前一章

引入openapi,因为是js组件,不需要在vue页面显示声明,直接使用

在页面创建时调用请求数据方法,页面加载完成既可在页面上看到数据

<template>
<div>
  <div>
    <p>this is imagesdata: {{ imagesData }}</p>
  </div>
</div>
</template>
<script>

import { getImages } from &#39;@/api/openapi&#39;

export default {
  name: &#39;Table&#39;,
  data() {
    return {
      imagesData: null,
      queryData: {
        page: 0,
        size: 10,
      }
    }
  },
  created() {
    this.fetchData();
  },
  methods: {
    fetchData() {
      getImages(this.queryData).then( (res) => {
        this.imagesData = res.result
      }).finally( () => {
        console.log(this.imagesData)
      })
    }
  }  
}
</script>
登入後複製

效果如下

vue3如何封裝axios

以上是vue3如何封裝axios的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板