当前位置:   article > 正文

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

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、页面中调用同步接口方式

  1. <script>
  2. import {saishipost} from "@/api/index" //按需引入里面的接口
  3. export default {
  4. name: 'App',
  5. data(){
  6. return{
  7. obj:[] //用来接收数据
  8. }
  9. },
  10. methods:{
  11. async postForm(){ //定义一个方法请求接口
  12. const re= await saishipost() //接口调用的方法
  13. // console.log(re)
  14. this.obj = re.data //赋值
  15. })
  16. }
  17. },
  18. mounted(){
  19. this.postForm() //调用接口请求
  20. }
  21. }
  22. </script>

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

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

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

return res.data  会出现Promise的情况

所以直接赋值即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/886552
推荐阅读
相关标签
  

闽ICP备14008679号