1. 安装axios
参考文档: https://www.axios-http.cn/docs/intro
2. 创建公共用法, 返回请求值;存放在utils/http.js中
import axios from "axios"
const http = axios.create({
// timeout: 2500, // 请求超时,有大文件上传需要关闭这个配置
baseURL: "http://localhost:5173", // 设置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;
3. 其他模块引用
import http from "../utils/http"
import {reactive, ref} from "vue"
const nav = reactive({
header_nav_list: [], // 头部导航列表
footer_nav_list: [], // 脚部导航列表
get_header_nav(){
// 获取头部导航
return http.get("/api/nav/header")
},
get_footer_nav(){
// 获取脚部导航
return http.get("/api/nav/footer")
},
})
export default nav;
4. vue组件中使用
<script setup>
import nav from "../api/nav";
// 获取脚部导航列表
nav.get_footer_nav().then(response=>{
nav.footer_nav_list = response.data
})
</script>
<template>
<div class="footer">
<ul>
<li v-for="nav in nav.footer_nav_list">
<a :href="nav.link" v-if="nav.is_http">{{nav.name}}</a>
<router-link :to="nav.link" v-else>{{nav.name}}</router-link>
</li>
</ul>
<p>Copyright © luffycity.com版权所有 | 京ICP备17072161号-1</p>
</div>
</template>
<style scoped>
</style>