Vue axios 二次封装、调用真实接口

2023-03-17  本文已影响0人  Rinaloving

axios 二次封装、调用真实接口

1. 为什么要二次封装 axios

封装

1. 创建 src/request/index.js 文件(请求网络数据)

import axios from "axios";
// 1. 利用axios对象的方法create,去创建一个axios案例
// 2. requests就是axios
const requests = axios.create({
  // 配置对象
  baseURL: "/api", //基础路径,发送请求的时候,路径当中会出现api
  timeout: 5000,   //请求超时的时间5s
})

// 请求拦截器:在发送请求之前,请求拦截器可以检测到,在请求发送之前处理一些事情
requests.interceptors.request.use((config) => {
  // config: 是配置对象,该对象包含一个属性-->headers请求头
  return config
})
// 响应拦截器:
requests.interceptors.response.use((res) => {
  // 成功的回调函数
  return res.data
}, (error) => {
  // 失败的回调函数
  return Promise.reject(new Error('faile'))
})

// 对外暴露
export default requests;


2. 接口统一管理

// 当前文件是对API进行统一管理
import request from '@/request/index'
// 登录
export const login = (data) =>{
    return request({
        url:"Auth/Login",
        method:"post",
        data,
    })
}

跨域

1. 什么是跨域?

server:{
    proxy:{
      '/api': {
        target:'http://127.0.0.1:5003/api',
        changeOrigin:true,
        rewrite: path => path.replace(/^\/api/, '')
       }
    }
  },
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { resolve } from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  base: process.env.NODE_ENV === "production" ? "/demo-site/" : "/",
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue', 'vue-router', 'vuex', 'vue-i18n'], // 自动导入vue 和 vue-router 等相关函数
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  server:{
    proxy:{
      '/api': {
        target:'http://127.0.0.1:5003/api',
        changeOrigin:true,
        rewrite: path => path.replace(/^\/api/, '')
       }
    }
  },
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
    }
  }
})
QQ截图20230318213142.png
上一篇 下一篇

猜你喜欢

热点阅读