vue配置axios统一管理后端接口API

一、安装axios

        执行命令安装:npm install axios --save-dev

 二、创建request.js引入axios

        在src目录下新建文件夹utils,在该文件下创建request.js文件,引入axios。后续一些实用的工具js都放在该目录下,如过滤器、token等。

import axios from "axios";

const request = axios.create({

    baseURL: 'http://localhost:8090/api',

    timeout: 3000

})

export default request;

  baseURL为后端接口通用地址

三、统一管理后端API接口地址

        在src目录下创建api文件夹用于存放后端的接口地址。

        在api下创建user目录,在use目录下创建user.js用来存放后端user相关的接口地址

        例如:       

 import request from '@/utils/request'

export function getById(id) {

    return request({

        method: 'get',

        url: '/user/getUserById',

        params: {

            'userId': id

        }

    })

}

 前后端参数如何传递获取,参考之前的博客:前后端分离,后端参数的接收_前后端分离,后端参数的接收@RequestParamRequestParam只能用于接收请求带的paramse.g: http://localhost:8080/XXXX/selectUser?userName=admin@PathVariablePathVariable只能用于接收url路径上的参数e.g: http://localhost:8080/XXXX/selectUser/adminPathVariable一般用于get和delete请求,RequestParam一般用于post请https://blog.csdn.net/shaogaiyue9745602/article/details/109049349?spm=1001.2014.3001.5501

四、修改Index.vue页面,添加按钮测试后台接口地址

        

<template>

    <div>

        版本号:{{version}}

        <el-button type="primary" @click="getOne">获取数据</el-button>

    </div>

</template>

<script>

import { getById } from '@/api/user/user'

export default {

  name: 'Index',

  data () {

    return {

      // 版本号

      version: '3.3.0'

    }

  },

  methods: {

    goTarget (href) {

      window.open(href, '_blank')

    },

    getOne(){

        getById('1').then(response => {

            console.log(response)

        })

    }

  }

}

</script>

五、启动后端与前端,点击按钮测试        

 注:

        后端需在controller接口上方添加注解@CrossOrigin 允许跨域,也可在前端配置跨域

Vue3中,封装axios是为了简化API请求的过程,使其更易于管理并提高代码复用性。以下是一个简单的步骤来创建一个封装的axios实例: 1. 首先,安装axios库: ```bash npm install axios ``` 2. 创建一个名为`axios.js`的文件,用于封装axios实例: ```javascript import axios from 'axios'; // 创建axios实例并配置默认选项 const service = axios.create({ baseURL: process.env.VUE_APP_API_URL, // API基础URL,根据实际情况替换 timeout: 5000, // 请求超时时间 headers: { 'Content-Type': 'application/json', }, }); // 拦截器处理,比如全局错误处理、添加身份验证等 service.interceptors.request.use( config => { // 在发送请求之前做些什么,如设置token等 return config; }, error => Promise.reject(error) ); service.interceptors.response.use( response => { // 对响应数据进行处理,例如解构JSON return response.data; }, error => { // 对错误进行处理,例如显示错误信息 console.error('Error:', error.message); Promise.reject(error.response.data || { message: error.message }); } ); // 导出service供其他组件使用 export default service; ``` 3. 使用封装好的axios在组件中发送请求: ```vue <script setup> import axios from '@/utils/axios'; async function fetchData() { try { const response = await axios.get('/your-endpoint'); // 处理返回的数据 console.log(response); } catch (error) { console.error(error); } } onMounted(() => { fetchData(); }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝南过

感谢大佬打赏,送你一个么么哒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值