vue中前后端数据交互
每次发送请求或者请求相应的时候 都会经过拦截器 才会进入到我们的程序(就是对我们的请求和相应进行发送前或者获取前的一个拦截 )
请求拦截
发送请求的时候会经过请求拦截 我们就可以在请求拦截上携带每次都要给后台的数据(用户的登录状态)
响应拦截
每次相应数据的时候都会经过相应拦截 (我们就可以在相应拦截的时候对我们的错误或者成功做出反应)
编写拦截器
1.在src下新建一个util文件夹(工具文件夹 用来放置一些项目中辅佐工具库)在创建对应的文件用来容纳拦截器
// 引用axios
import axios from "axios"
let service=axios.create()
// 添加请求拦截器
service.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
service.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
// 暴露
export default service
数据请求的封装
1.在src下新建一个api的文件夹(就是容纳数据请求的)新建一个文件容纳封装的请求
// 1.引用拦截器
import service from "@/utils/service.js"
// 2.开始使用promise进行封装
let getlink=(url,method='get')=>{
// resolve成功
// reject失败
return new Promise((resolve,reject)=>{
// 就可以执行你所要封装的操纵
service.request({
url,
method
}).then((ok)=>{
resolve(ok)
}).catch((err)=>{
reject(err)
})
})
}
// 3.暴露
export default getlink
使用封装的请求
1.在你想用的地方先引用 在使用
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
<script>
// 1.引用
import getlink from "@/api/getapi.js";
export default {
created(){
getlink("/api/data/cityinfo/101320101.html").then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
}
};
</script>
跨域
devServer代理跨域
devServer就是vue脚手架中那个内置的微型开发小服务器
1.在项目的根路径下 创建一个vue.config.js
2.写入如下内容
module.exports={
devServer: {
proxy: { //配置跨域
'/api': {
target: 'http://www.weather.com.cn/', //需要解决跨域的地址
pathRewrite: {
'^/api': ''
}
},
}
},
}
3.修改请求路径
<template>
<div>
<button @click="fun()">点我请求数据</button>
</div>
</template>
<script>
import $http from "axios"
export default {
methods:{
fun(){
$http({
// 修改名字
url:"/api/data/cityinfo/101320101.html",
method:"get",//没有s
}).then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
}
}
}
</script>
4.千万不要忘了重启
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类