001基于Vue3的Axios异步请求
一、Axios安装及应用
1、Axios是一个基于promise的网络请求库
Axios是需要单独安装的:npm install --save axios
创建项目 npm create vite@latest

提示

这里我们输入y,安装完成


写入文件名字 viteaxios

选择Vue

选择JavaScript

进入到项目中去

然后是 npm install

接下来我们就可以启动一下

点开网页看一下

然后我们整理下文件

这个文件可以删除,同时修改main.js 里面这句话删除

这页这样写

这页这样写


看下控制台,没有报错

Ctrl+C停掉项目,选y

然后我们安装npm install --save axios

安装完成

2、a) 组件中引入 axios: import axios from 'axios'(局部调用axios)
案例源码:
<!--Helloworld.vue-->
<script setup>
import {onMounted,reactive} from "vue"
import axios from "axios"
import querystring from 'querystring'
const emp=reactive({
id: 0,
name:"",
address:"",
money:0.0
})
/*onMounted(()=>{
axios({
method:"get",
url:"http://localhost:8080/hello"
}).then(res=>{
emp.id=res.data.id
emp.name=res.data.name
emp.money=res.data.money
emp.address=res.data.address
console.log(res.data)
})
})*/
//需要安装querystring插件 npm install --save querystring ;
//然后引入组件:import querystring from 'querystring'
onMounted(()=>{
axios({
method:"post",
url:"http://localhost:8080/hello",
data: querystring.stringify({
id:100,
name:"李四",
money:10000.0,
address:"河南周口"
})
}).then(res=>{
emp.id=res.data.id
emp.name=res.data.name
emp.money=res.data.money
emp.address=res.data.address
console.log(res.data)
})
})
axios.post("http://localhost:8080/hello",querystring.stringify({
id:100,
name:"李四",
money:10000.0,
address:"河南周口"
})).then(res=>{
emp.id=res.data.id
emp.name=res.data.name
emp.money=res.data.money
emp.address=res.data.address
console.log(res.data)
})
</script>
<template>
<p>welcome to Axios</p>
<p><span>{{ emp.id }}---{{ emp.name }}---{{ emp.address }}---{{ emp.money }}</span></p>
</template>
<style lang="scss" scoped>
</style>
<!--App.vue-->
<script setup>
import Helloworld from './components/Helloworld.vue'
</script>
<template>
<Helloworld />
</template>
<style scoped>
</style>
后台基于Springboot的核心代码如下:
```java
package com.qst.springbootredis.controller;
import com.qst.springbootredis.pojo.Emp;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @thuthor dewey
* @Date 2024/3/7/9:45
*/
@RestController
@CrossOrigin
public class HelloController {
/* @RequestMapping("/hello")
public Emp hello(){
System.out.println("axios***************");
Emp emp=new Emp();
emp.setId(2);
emp.setName("张三");
emp.setMoney(8000.0);
emp.setAddress("河南罗友");
return emp;
}*/
@RequestMapping("/hello")
public Emp hello( Emp e){
System.out.println("axios***************");
Emp emp=e;
/*Emp emp=new Emp();
emp.setId(2);
emp.setName("张三");
emp.setMoney(8000.0);
emp.setAddress("河南罗友");*/
return emp;
}
}
准备一个后端数据

用get方式:
现在我们准备发送请求了,通过一个周期函数Mounted

如果想让他显示我们可以声明一个显示的东西reactive

启动项目

可以看到打开之后:

可以看到打印出来了,接下来我们让他显示出来

用post方式:
安装插件 npm install --save querystring

安装完

引入插件

就可以这样写

还可以这样写,效果是一样的(get也可以写成这个样子的)

还可以这样写(get也可以写成这个样子的)

b) 全局引入 (main.js):
import { createApp} from 'vue'
import App from './App.vue'
import axios from 'axios'
const app=createApp(App)
//app.config.globalProperties.$axios=axios
app.provide("axios",axios)
app.mount('#app')
我们只需要改一下这里

还有这里就是全局引用了


浙公网安备 33010602011771号