简单粗暴上代码上注释 (看不懂算我输系列第一期)
在src目录下新建api文件夹和http文件夹,里面放上相应的JS结尾的文件
//http.js 存放封装逻辑,和请求拦截器、响应拦截器
import axios from "axios"
if(process.env.NODE_ENV === "development"){
//测试环境和上线环境网址前半部分相同地方
axios.defaults.baseURL = "http://120.53.31.103:84";
}else if(process.env.NODE_ENV === "production"){
axios.defaults.baseURL = 'http://wap.365msmk.com';
}
//设置超时时间
axios.defaults.timeout = 10000;
//请求拦截
axios.interceptors.request.use(config =>{
//判断PC或手机或者小程序 ***只是演示***
config.headers = { DeviceType: 'H5'}//响应头参数
return config
})
// 响应拦截
axios.interceptors.response.use(response=>{
return response.data //拦截处理相应结果,直接返回需要的数据
}),err=>{
console.log(err)
}
//promise拼接路径 get post请求方式 亦或是其他请求方式
export function get(url,params){
return new Promise((resolve,reject)=>{
axios.get(url,{
params: params
}).then(res=>{
resolve(res)
}).catch(err=>{
reject(err)
})
})
}
//这里踩坑post和get请求拼接的方式不一样
export function post(url,params){
return new Promise((resolve,reject)=>{
axios.post(url,params)
.then(res=>{
resolve(res)
})
.catch(error=>{
reject(error)
})
})
}
api部分
//api部分 存放项目中所有请求接口的url和请求方式
//引入之前写好的http
import { get, post } from "../http/http.js";
//配置后半截请求地址 逐一抛出
//首页名师部分
export function GetApp() {
return get("/api/app/recommend/appIndex")
}
//请求地址后半截
export function GetAppBanner() {
return post("/api/app/banner")
}
//页面请求部分
async mounted() {
//轮播图
let res = await GetAppBanner();
this.banner = res.data.data;
// console.log(this.banner)
//名师阵容 精品课程 等
res = await GetApp();
this.list = res.data.data;
console.log(this.list);
},
请求时一定要注意请求方式,否则会报object的错误,根据错误去找到相应的位置即可
除了封装后直接在页面引入http.js之外还有一种方式就是将http挂载在Vue的原型上,即在main.js里面写入
Vue.prototype.$Http = Http
methods: {
async onDelete(info){
let res = await this.$Http.delContact(
{
id:info.id
}
)
if(res.code === 200){
Toast('删除成功')
this.getList()
}
}
}
如果你觉得本篇文章够简单易懂,对你有所帮助的话,请点点你的关注,你的关注是对我最大的支持,博主长期更新,有事私信,我都在