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

本文详细介绍了在Vue.js项目中如何安装和配置Axios,包括在main.js中设置全局属性、解决跨域问题、封装Axios以及在组件中调用接口。同时,还提供了处理返回数据为Promise的解决方案,帮助开发者更好地理解和实践Vue与Axios的结合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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文件

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer:{
    proxy:{
      'api':{
          target:'https://......',  //接口的公共部分 域名+端口号
          pathRewrite:{'^/api':''},
          ws:true,
          changeOrigin:true
      }
    }
  }
})

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

四、封装Axios

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

        api下创建request.js和index.js

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

用来存放接口文件

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

import axios from "axios";   //导入axios
const token = sessionStorage.getItem('token')||'默认的token'   
//token存放在session里 如果没有则执行默认的token

const requests = axios.create({
    baseURL:'/api',    //跨域里配置的api
    timeout:5000        //响应时间
})

//添加请求拦截器
requests.interceptors.request.use(function(config){
    //在发送之前做些什么,例如加入token
    config.headers.Authorization = 'Bearer ' +token   //设置请求头token
    return config;
},function(error){
    //对请求错误做些什么?
    return Promise.reject(error)
})


//添加响应拦截器
requests.interceptors.request.use(function(response){
    //在接受响应时做些什么,例如跳转到登录页
    return response;
},function(error){
    //对响应错误做点什么?
    return Promise.reject(error)
})

export default requests

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

import requests from './request'

//以post请求为例
export const saishipost = (data)=>requests({
    url:'/match/user/info',    //直接放地址即可。
    method:'post',
    data
})

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

<script>
import {saishipost} from "@/api/index"   //按需引入里面的接口
export default {
  name: 'App',
  data(){
    return{
      obj:[] //用来接收数据
    }
  },
  methods:{
    async postForm(){            //定义一个方法请求接口
       const re=  await saishipost()      //接口调用的方法
        // console.log(re)
        this.obj = re.data              //赋值
       })
    }
  },
  mounted(){
    this.postForm()                    //调用接口请求
  }
}
</script>

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

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

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

return res.data  会出现Promise的情况

所以直接赋值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值