Vue3集成axios实现ajax请求

工具安装

安装axios工具插件,务必保证是在客户端项目根目录下安装。

yarn add axios@next

简单测试 

src/views/Home.vue,先测试服务端的跨域资源共享是否能使用,代码:

<template>
  <div class="home">
    <Header></Header>

    <Footer></Footer>
  </div>
</template>

<script setup>
import Header from "../components/Header.vue"
import Footer from "../components/Footer.vue"


// 测试CORS的跨域配置是否有问题
import axios from "axios"
const http = axios.create()
// 测试服务端的跨域是否配置成功
http.get("http://local.api.leshen.cn:8000/home/test").then(response=>{
  console.log(response.data);
})


</script>

<style scoped>

</style>

建立工具类

  1. 配置axios请求拦截器和响应拦截器。

src/utils/http.js,代码:

import axios from "axios"

const http = axios.create({
    // timeout: 2500,                          // 请求超时,有大文件上传需要关闭这个配置
    baseURL: "http://local.leshen.cn:8000",     // 设置api服务端的默认地址[如果基于服务端实现的跨域,这里可以填写api服务端的地址,如果基于nodejs客户端测试服务器实现的跨域,则这里不能填写api服务端地址]
    withCredentials: false,                    // 是否允许客户端ajax请求时携带cookie
})

// 请求拦截器
http.interceptors.request.use((config)=>{
    console.log("http请求之前");
    return config;
}, (error)=>{
    console.log("http请求错误");
    return Promise.reject(error);
});

// 响应拦截器
http.interceptors.response.use((response)=>{
    console.log("服务端响应数据成功以后,返回结果给客户端的第一时间,执行then之前");
    return response;
}, (error)=>{
    console.log("服务端响应错误内容的时候。...");
    return Promise.reject(error);
});

export default http;
<template>
  <div class="home">
    <Header></Header>

    <Footer></Footer>
  </div>
</template>

<script setup>
import Header from "../components/Header.vue"
import Footer from "../components/Footer.vue"
// 测试CORS的跨域配置是否有问题
import http from "../utils/http.js"

// // 测试CORS的跨域配置是否有问题
// import axios from "axios"
// const http = axios.create()
// // 测试服务端的跨域是否配置成功
// http.get("http://local.api.leshen.cn:8000/home/test").then(response=>{
//   console.log(response.data);
// })

// 测试服务端的跨域是否配置成功
http.get("/home/test").then(response=>{
  console.log(response.data);
})

</script>

<style scoped>

</style>

### Vue3 中使用 Axios 实现 Ajax 请求Vue3 开发中,虽然框架本身并未内置与服务器通信的功能,但可以通过引入第三方库 `axios` 来完成这一需求。以下是关于如何在 Vue3 项目中配置并使用 Axios 发起 GET 和 POST 请求的具体方法。 #### 配置 Axios 首先,在 Vue3 项目中安装 Axios 库: ```bash npm install axios ``` 接着可以在项目的入口文件(通常是 `main.js` 或者单独创建一个 `api.js` 文件)中全局注册 Axios: ```javascript import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import axios from &#39;axios&#39;; // 创建 Axios 实例 const instance = axios.create({ baseURL: &#39;https://example.com/api/&#39;, // 设置基础 URL timeout: 5000, // 超时时间设置为 5 秒 }); // 添加请求拦截器 instance.interceptors.request.use( (config) => { console.log(&#39;Request Config:&#39;, config); return config; }, (error) => Promise.reject(error) ); // 添加响应拦截器 instance.interceptors.response.use( (response) => response.data, (error) => Promise.reject(error) ); createApp(App).mount(&#39;#app&#39;); export default instance; ``` 上述代码定义了一个带有默认参数的 Axios 实例,并设置了请求和响应的拦截器[^1]。 #### 使用 Get 请求获取数据 下面是一个简单的例子展示如何利用 Axios 执行 GET 请求来从服务器读取资源: ```javascript import axiosInstance from &#39;@/path/to/your/axios-instance&#39;; function fetchData() { axiosInstance.get(&#39;/users&#39;, { params: { name: &#39;蔡某坤&#39;, sex: &#39;gay&#39;, hobby: &#39;basketball&#39; } }) .then((response) => { console.log(&#39;Data received successfully:&#39;, response); }) .catch((error) => { console.error(&#39;Error fetching data:&#39;, error); }); } fetchData(); ``` 此段代码展示了向 `/users` 地址发送带查询字符串参数的 GET 请求过程[^3]。 #### 使用 Post 请求提交表单数据 对于需要向服务器传递复杂对象或者大量数据的情况,则可以采用 POST 方法: ```javascript import axiosInstance from &#39;@/path/to/your/axios-instance&#39;; function postData() { const formData = new FormData(); formData.append(&#39;name&#39;, &#39;蔡某坤&#39;); formData.append(&#39;sex&#39;, &#39;gay&#39;); axiosInstance.post(&#39;/submit-form&#39;, formData) .then((response) => { console.log(&#39;Form submitted successfully:&#39;, response); }) .catch((error) => { console.error(&#39;Failed to submit form:&#39;, error); }); } postData(); ``` 这里演示了构建 `FormData` 对象并通过 POST 方式上传至指定 API 端点的操作。 通过以上介绍可以看出,无论是简单还是复杂的场景下,Axios 都能很好地满足前后端之间的数据交换需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A乐神

恭喜发财啊,老板,嘻嘻!

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

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

打赏作者

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

抵扣说明:

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

余额充值