• 【Vue3】Axios简易二次封装+token+跨域问题+接口同步调用使用。


    一、npm安装axios

    npm install axios --save

    二、main.js中配置axios

    import { createApp } from 'vue'

    import axios from 'axios';

    import App from './App.vue'

    const app = createApp(App)

    app.config.globalProperties.$axios = axios

    app.mount('#app')

    三、解决跨域问题

    找到vue.config.js文件

    1. const { defineConfig } = require('@vue/cli-service')
    2. module.exports = defineConfig({
    3. transpileDependencies: true,
    4. devServer:{
    5. proxy:{
    6. 'api':{
    7. target:'https://......', //接口的公共部分 域名+端口号
    8. pathRewrite:{'^/api':''},
    9. ws:true,
    10. changeOrigin:true
    11. }
    12. }
    13. }
    14. })

    如果需要多个不同域名接口进行跨域,再进行创建即可。

    四、封装Axios

    1、首先在src文件夹下创建api文件夹。

            api下创建request.js和index.js

    文件名作用
    request.js用来封装axios
    index.js

    用来存放接口文件

    2、在request.js文件下进行如下配置

    1. import axios from "axios"; //导入axios
    2. const token = sessionStorage.getItem('token')||'默认的token'
    3. //token存放在session里 如果没有则执行默认的token
    4. const requests = axios.create({
    5. baseURL:'/api', //跨域里配置的api
    6. timeout:5000 //响应时间
    7. })
    8. //添加请求拦截器
    9. requests.interceptors.request.use(function(config){
    10. //在发送之前做些什么,例如加入token
    11. config.headers.Authorization = 'Bearer ' +token //设置请求头token
    12. return config;
    13. },function(error){
    14. //对请求错误做些什么?
    15. return Promise.reject(error)
    16. })
    17. //添加响应拦截器
    18. requests.interceptors.request.use(function(response){
    19. //在接受响应时做些什么,例如跳转到登录页
    20. return response;
    21. },function(error){
    22. //对响应错误做点什么?
    23. return Promise.reject(error)
    24. })
    25. export default requests

    3、在index.js文件下进行如下配置

    1. import requests from './request'
    2. //以post请求为例
    3. export const saishipost = (data)=>requests({
    4. url:'/match/user/info', //直接放地址即可。
    5. method:'post',
    6. data
    7. })

    4、页面中调用同步接口方式

    5、解决返回数据是Promise的情况

    正常情况下 执行到上面就已经完成了当前页面对接口的调用

    如果控制台出现 secondSong:Promise的情况,应该是没有复制,直接return了

    return res.data  会出现Promise的情况

    所以直接赋值即可。

  • 相关阅读:
    vue3将自定义组件插入指定dom
    rk平台调试:failed to find backlight: -517
    【Pytorch】Tensor基本操作
    【无标题】
    canvas文字绘制
    ScrollView嵌套RV,滑动有阻力不顺滑怎么办?
    useEffect
    Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
    el-input中监听键盘事件“回车”和“Tab”
    智慧农业:农林牧数据可视化监控平台
  • 原文地址:https://blog.csdn.net/Lin_Yu_/article/details/127783783