美文网首页
Vue axios 二次封装、调用真实接口

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

作者: Rinaloving | 来源:发表于2023-03-17 21:32 被阅读0次

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;


  • 写法二:
    • 再创建一个 src/request/config.js 文件
    export default {
      method: 'get',
      // 基础url前缀
      baseURL: '/api',
      // 请求头信息
      headers: {
        'Content-Type': 'application/json;charset=UTF-8'
      },
      // 设置超时时间
      timeout: 10000,
      // 携带凭证
      withCredentials: true,
      // 返回数据类型
      responseType: 'json'
    }
    
    • 修改一下 index.js 文件中的内容
    const requests = axios.create({...config}) 
    # 等价于
     const requests = axios.create({
    // 配置对象
    baseURL: "/api", //基础路径,发送请求的时候,路径当中会出现api
    timeout: 5000,   //请求超时的时间5s
    })
    

2. 接口统一管理

  • 在/src/api文件夹下,创建login.js文件,对请求接口进行统一管理:
// 当前文件是对API进行统一管理
import request from '@/request/index'
// 登录
export const login = (data) =>{
    return request({
        url:"Auth/Login",
        method:"post",
        data,
    })
}

跨域

1. 什么是跨域?

  • 当前发起请求的域和该请求指向的资源所在的域不一致。具体表现在协议、域名、端口号——均一致为同域,有一个不同就是跨域

  • 在根目录下,创建vue.config.js

server:{
    proxy:{
      '/api': {
        target:'http://127.0.0.1:5003/api',
        changeOrigin:true,
        rewrite: path => path.replace(/^\/api/, '')
       }
    }
  },
  • vue.config.js 完整内容
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截图20230318213018.png
    QQ截图20230318213132.png
QQ截图20230318213142.png

相关文章

  • vue项目后台接口管理

    前言 上篇文章axios二次封装及API接口统一管理讲到了vue项目中的axios请求api统一的封装,但是api...

  • axios封装

    1、封装axios 2、对请求做封装,具体怎么来封装,根据自己的接口来 3、接口 4、调用

  • Vue项目axios封装

    request.js封装axios api.js中 axios的使用 页面中调用接口

  • axios 封装、proxyTable代理设置

    axios 封装 设置代理 打包时,设置不同的接口地址 其他 1.axios封装 1.1 全局设置 1.2调用 2...

  • axios二次封装处理

    二次封装axios拦截器 更方便处理前端接口请求 vue官网文档[https://vuex.vuejs.org/z...

  • vite+vue3+ts+pinia+element-plus搭

    在vue项目中一般是通过axios进行接口请求,axios已经帮我们做了很多事,但是在实际项目中还需要进行二次封装...

  • vue中axios封装和api接口管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • 2020-04-07vue中Axios的封装和API接口的管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • vue中axios封装和api接口管理

    vue中Axios的封装和API接口的管理 我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是...

  • axios封装

    index.js------axios封装 api.js------接口文件 单页面引入---login.vue ...

网友评论

      本文标题:Vue axios 二次封装、调用真实接口

      本文链接:https://www.haomeiwen.com/subject/giajrdtx.html