Vue中使用axios进行前后端的数据传输(附详细代码)

本文详细介绍了在Vue项目中如何使用Axios进行前后端交互,包括安装配置、GET和POST请求的具体实现,以及使用qs模块处理POST请求中复杂的data格式。

Vue界面在前后端交互的过程中使用的是AJAX的方式来进行的数据交互,我们一般来说使用较多的是Vue-resource 以及 axios 这俩个组件来实现Vue的前后端的交互。但是在Vue1.0中官方推荐使用vue-resource,在Vue2.0的时候,官方推荐使用axios。并且在之后对Vue-resource不再进行维护更新。所以今天我就来说一说axios的使用。

安装组件

npm install axios --save

然后在main.js文件中引入,axios不能使用use。

import Vue from 'vue';
import axios from 'axios';
Vue.prototype.$axios = axios;

get请求

不带参数

this.$axios
        .get("http://localhost:8080/api/coffee/selectAllCoffee")
        .then(res => {
          console.log(res);
        });

带参数

this.$axios
        .get("http://localhost:8080/api/coffee/search", {
          params: {
            name: this.name
          }
        })
        .then(function(res) {
          console.log(res);     
        })
        .catch(resp => {
          console.log("请求失败:" + resp.status + "," + resp.statusText);
        });

Post请求

this.$axios.post("http://localhost:8080/api/machine/insertMachine",{
                machineId: that.form.machineId,
                coffeemachine: that.form.coffeemachine,
                machineKinds: that.form.machineKinds,
                machinePrice: that.form.machinePrice,
                state: that.radio,
                note: that.form.note,
                menuId:that.form.menuId
            }).then(res=>{
               console.log(res);
            })

post请求相较于get请求会相对复杂一点,他可能会存在数据格式不对的情况, 这时候就需要使用 qs 模块对 data 进行格式化。

1、首先安装qs

npm install qs

import qs from 'qs'

Vue.prototype.$qs=qs

2、使用qs对数据进行格式化

let data={
        coffeeId: that.form.coffeeId,
        coffeeName: that.form.coffeeName,
        coffeeKinds: that.form.coffeeKinds,
        coffeeDiscount: that.form.coffeeDiscount,
        newPrice: that.form.newPrice,
        oldPrice: that.form.oldPrice,
        coffeeImage:that.form.coffeeImage
      }
      this.$axios
        .post("http://localhost:8080/api/coffee/updateCoffee",qs.stringify(data),{
          headers: {
            'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'
          }
        }
        )
        .then(res => {
          console.log(res);
        });
<think>好的,我现在需要帮助用户了解如何创建Vue3前项目以及实现前后数据传输的方法。首先,我得回顾用户提供的引用内容,确保回答准确。根据引用2,用户提到使用VueCLI创建项目有两种方法:命令行和UI界面。引用3提到了Vue3项目的动态特性以及与后(如Springboot)的交互。引用4展示了前后数据交互的代码示例,比如使用axios发送请求。首先,创建Vue3项目部分,我需要分步骤说明两种创建方式,并强调Node.js环境的必要性。然后,项目结构部分需要简要介绍主要目录和文件,帮助用户理解框架。 接下来是前后数据交互。需要提到axios的安装和使用,以及如何封装请求。引用4代码示例可以展示GET和POST请求的具体实现,同时说明跨域问题的解决方法,比如代理配置。然后,生成相关问题需要考虑用户可能遇到的后续问题,比如跨域处理、状态管理、项目部署等,确保问题覆盖常见的使用场景。 需要注意的是,用户可能对Vue3的新特性如Composition API不太熟悉,但问题没有提到,所以暂时不深入。另外,确保回答代码格式正确,使用$...$和$$...$$符合之前的系统指令,但用户问题主要涉及代码块,所以正确使用反引号包裹。最后,检查引用标记是否正确添加,例如在提到VueCLI创建项目时引用[^2],在数据交互部分引用[^4]。确保回答结构清晰,分步骤讲解,并代码示例,使用户能够跟随操作。</think>### Vue3前项目创建教程 #### 一、环境准备 1. 安装Node.js(建议v16.14+) 2. 执行命令安装Vue CLI: $$ npm install -g @vue/cli $$ #### 二、项目创建步骤 1. **命令行创建**(推荐): ```bash vue create vue3-demo # 选择Vue3预设模板 ``` 2. **可视化创建**(适合新手): ```bash vue ui # 浏览器自动打开图形界面[^2] ``` #### 三、项目结构解析 ``` ├── public/ # 静态资源 ├── src/ │ ├── assets/ # 模块资源 │ ├── components/ # 组件目录 │ ├── router/ # 路由配置 │ ├── views/ # 页面组件 │ └── main.js # 入口文件 └── package.json ``` ### 前后数据交互方法 #### 一、axios配置 1. 安装HTTP库: $$ npm install axios $$ 2. 创建`src/utils/request.js`: ```javascript import axios from 'axios' const service = axios.create({ baseURL: '/api', timeout: 5000 }) export default service ``` #### 二、数据请求示例 1. **GET请求**(查询数据): ```javascript // 在vue组件 import request from '@/utils/request' const loadData = async () => { const res = await request.get('/user/list') console.log(res.data) } ``` 2. **POST请求**(新增数据): ```javascript const saveData = () => { request.post('/user/save', { name: '张三', userNo: '2023001' }).then(res => { if(res.code === 200){ ElMessage.success('操作成功') // 引用ElementPlus组件[^4] } }) } ``` #### 三、跨域解决方案 在`vue.config.js`添加: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8080', // 后地址 changeOrigin: true } } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值