ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

vue3封装接口(自测可用)

2026/9/24 0:46:49 拓冰建站 浏览量
vue3封装接口(自测可用)

注:别忘记安装axios

在实际的项目实战中如果我们不对接口加以管理,整篇看着就很乱,这个时候我们就要用到接口封装了。

废话不多说直接上代码!!!

首先是request.js

import axios from "axios";// 使用环境变量来设置基础URL
const baseURL = process.env.VUE_APP_API_BASE_URL || "接口前缀http://xxxxxxxxxxxxxx";const service = axios.create({baseURL: baseURL,timeout: 5000,headers: {"Content-type": "application/json;charset=utf-8"}
});service.interceptors.request.use(config => {const token = localStorage.getItem("token");if (token) {config.headers['Authorization'] = 'Bearer ' + token;}return config;
}, error => {console.error("Request error: ", error);return Promise.reject(error);
});service.interceptors.response.use(response => {if (response.status === 200) {return response.data;} else {// 可以根据需要添加更多的错误处理console.error("Response error: ", response);return Promise.reject(new Error("Error with status code " + response.status));}
}, error => {// 对常见的HTTP错误进行处理if (error.response) {// 请求已发出,服务器回复状态码不在2xx范围console.error("Error status: ", error.response.status);// 根据返回的状态码进行不同的处理// 例如: if (error.response.status === 401) { // 处理登录过期 }} else {// 服务器连回应都没有返回console.error("Network error: ", error);}return Promise.reject(error);
});export default service;

其次api.js

post方法

// 我要用到的一些接口
import service from "@/request/index";
// 引入接口
// 如果在 JavaScript 中引入接口不需要进行类型标注
// import { ILoginData } from "@/type/login";// 登录接口
export function index(data) {return service({url: "/index/index",method: "POST",data: data});
}

get方法

export function index(queryParams) {return service({url: "/index/index",method: "GET",params: queryParams});
}

 方法(补充)

方法很多就看用那一些了,前面两种是基础格式,这个方法进行了一些简单的配置,调用和前面一样。

export function index(data) {// 创建一个FormData实例const formData = new FormData();// 假设data对象是这样的:{ username: 'user1', password: 'pass', file: FileObject }// 你可以循环遍历data对象,并添加到formData中for (const key in data) {formData.append(key, data[key]);}// 发送multipart/form-data请求return service({url: "/mobile/login",method: "POST",data: formData,headers: {'Content-Type': 'multipart/form-data'}});
}

然后home.vue

到这里就非常简单了,直接import引入相应的名称在使用就可以了

<template><div><div @click="inds">加载数据</div></div>
</template><script setup>
import { ref } from 'vue';
import { index } from "@/request/api";const inds = async () => {try {const res = await index();console.log(1, res);} catch (err) {console.error(2, err);} finally {console.log(3);}
};
</script>

最后封装接口请求数据

首页不需要参数,可以直接请求,那么需要参数的怎么办呢?有方法

这两种方法都行没什么不一样的

方法一

<script setup>
import { ref } from 'vue';
import { index } from "@/request/api";const inds = async () => {try {let id = 1119;//比如接口需要id就声明id,如果是name就写nameconst res = await index({id});console.log(1, res);} catch (err) {console.error("失败", err);} 
};
</script>

方法二

<script setup>
import { ref } from 'vue';
import { index } from "@/request/api";const inds = async () => {try {const res = await index({id:1119});console.log(1, res);} catch (err) {console.error("失败", err);} 
};
</script>

到这里就结束了感谢观看,有疑问可以在评论区写出来。